package test; //Comparable 使对象本身具有可比性,这种方式称为元素的自然顺序或默认顺序 //Comparator 元素自身不具备比较性或者比较性不是所需要的,在集合初始化让其具有比较性 (更实用) import java.util.*; //class public class TreeSetDemo { public static void main(String[] args) { TreeSet<Student> st=new TreeSet<Student>(new MyComparator()); st.add(new Student("bca",23)); st.add(new Student("bca",23)); st.add(new Student("abc",29)); st.add(new Student("dcba",24)); for(Iterator<Student> it=st.iterator();it.hasNext();) { Student p=it.next(); System.out.println(p.getName()+"==="+p.getAge()); } } } class Student implements Comparable<Student> //实现了接口必须实现compare(); { private String name; private int age; Student(String name,int age) { this.name=name; this.age=age; } String getName() { return name; } int getAge() { return age; } @Override public int compareTo(Student st)//实现compare方法 { if(this.age>st.age) return 1; if(this.age==st.age) return 0; return -1; } } //Object类实现了equail();所以实现接口以下时只需对compare()重写即可 class MyComparator implements Comparator<Student>//实现了接口必须实现compare(); { @Override public int compare(Student s1,Student s2) { int num=s1.getName().compareTo(s2.getName()); if(num==0) { return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));//Integer 类实现了Comparable接口 // if(s1.getAge()>s2.getAge()) // return 1; // if(s1.getAge()==s2.getAge()) // return 0; // return -1; } return num; } }
java 两种方式实现自定义排序
最新推荐文章于 2024-09-04 19:10:43 发布