定制排序
Comparator
list.sort(Comparator)
Collections.sort(List , Comparator)
一般在创建的集合的时候才会去创建Comparator对象进行排序
自然排序
Comparable
Collections.sort(List)
自然排序 一般都是写在对象那里 由对象类进行实现 Comparable
然后重写方法即可
两个都是接口 都是对比大小
都是对字段进行大小对象
如果等于 说明相等
如果小于0 则小于 降序排序
如果大于0 则大于 升序排序
注意排序的时候一定要写一类对象
定制排序
创建一个comparator对象中调用Comparator的匿名类重写comparator方法
List list = new ArrayList();list.add(new User("ll",1));list.add(new User("ll",4));list.add(new User("ll",3));
Comparator<User> comparator = new Comparator<User>() {@Overridepublic int compare(User o1, User o2) {//对比User的name值int date = o1.Name().compareTo(o2.Name());if (date!=0) {return date;}else {return Integer.compare(o1.Age(), o2.Age());}}};list.sort(comparator);Iterator er = list.iterator();
注意:程序生成的compare方法传入的是object类型,需要转成指定类型
自然排序
自然排序在类中实现compareTo接口并重写comparator方法
Collections.sort(list);
class User implements Comparable<User> {private String name;private int age;public User(String name,int age){this.name=name;this.age=age;}public String Name(){return name;}public int Age(){return age;}@Overridepublic int compareTo(User o) {int data = this.name.compareTo(o.name);if (data != 0)return data;elsereturn Integer.compare(this.age,o.age);}public String toString(){return "名字:" + name +"年龄:" + age;}}
定制排序调用方式
list.sort(comparator);
Collections.sort(list,comparator);
