Comparator和comparable的区别
区别:
comparator
接口实际上是出自java.util包,它有一个compare(Object obj1, Object obj2)
方法用来排序(比较器)
comparable
接口实际上是出自java.lang
包,它有一个compareTo(Object obj)
方法用来排序(排序接口)
Comparator定制排序:
compare方法中调用的是对象实现comparable接口重写的compareTo方法。
// void sort(List list),按自然排序的升序排序 Collections.sort(arrayList); // 定制排序的用法//降序 Collections.sort(arrayList, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } });
Comparable接口:
重写 compareTo 方法实现按年龄来排序:
// person对象没有实现Comparable接口,所以必须实现,这样才不会出错,才可以使treemap中的数据按顺序排列 // 前面一个例子的String类已经默认实现了Comparable接口,另外其他像Integer类等都已经实现了Comparable接口,所以不需要另外实现了 public class Person implements Comparable<Person> { private String name; private int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } /** * T重写compareTo方法实现按年龄来排序 */ @Override public int compareTo(Person o) { if (this.age > o.getAge()) { return 1; } if (this.age < o.getAge()) { return -1; } return 0; } }
总结:
comparator
接口出自java.util包,是一个比较器,它有一个compare(Object o1, Object o2)
方法用来排序,compare方法中调用的是对象实现comparable接口重写的compareTo方法。
comparable排序
接口出自java.lang
包,它有一个compareTo(Object o)
方法用来排序,主要是对象实现comparable接口重写 compareTo 方法实现按某字段排序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY