Java中Comparable和Comparator接口有什么区别
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家介绍Java中Comparable和Comparator接口有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Comparable 简介Comparable
千家信息网最后更新 2026年11月01日Java中Comparable和Comparator接口有什么区别
这篇文章给大家介绍Java中Comparable和Comparator接口有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Comparable 简介
Comparable 是排序接口
若一个类实现了Comparable接口,就意味着"该类支持排序"。此外,"实现Comparable接口的类的对象"可以用作"有序映射(如TreeMap)"中的键或"有序集合(TreeSet)"中的元素,而不需要指定比较器。
接口中通过x.compareTo(y)来比较x和y的大小。若返回负数,意味着x比y小;返回零,意味着x等于y;返回正数,意味着x大于y。
Comparator 是比较器接口
我们若需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口);那么,我们可以建立一个"该类的比较器"来进行排序。这个"比较器"只需要实现Comparator接口即可。也就是说,我们可以通过"实现Comparator类来新建一个比较器",然后通过该比较器对类进行排序。
int compare(T o1, T o2)和上面的x.compareTo(y)类似,定义排序规则后返回正数,零和负数分别代表大于,等于和小于。
两者的联系
Comparable相当于"内部比较器",而Comparator相当于"外部比较器"。
代码实现
package mytest;import java.util.*;/** * @ _ooOoo_ * o8888888o * 88">public class LearnCompare{ public static void main(String[] args){ List list = new ArrayList(); list.add(new Node("yguo", 25)); list.add(new Node("msdfj", 22)); list.add(new Node("skf", 20)); list.add(new Node("sfe", 23)); System.out.println("===Age排序外部比较器==="); Collections.sort(list, new Comparator(){ @Overridepublic int compare(Node o1, Node o2){ return o1.getAge() - o2.getAge();}});for (Iterator it = list.iterator(); it.hasNext(); ){ System.out.println(it.next());} System.out.println("===Name排序外部比较器===="); Collections.sort(list, new Comparator(){ @Overridepublic int compare(Node o1, Node o2){ return o1.getName().compareTo(o2.getName());}});for (Iterator it = list.iterator(); it.hasNext(); ){ System.out.println(it.next());} System.out.println("===Age排序 内部比较器==="); Collections.sort(list);for (Iterator it = list.iterator(); it.hasNext(); ){ System.out.println(it.next());}}}//class Node implements Comparable{ private String name;private int age;public Node(String name, int age){ 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;}@Overridepublic int compareTo(Node other){ if (age > other.getAge())return -1;if (age < other.getAge())return 1;return 0;}@Overridepublic String toString(){ return "Name " + name + " age " + age;}} 关于Java中Comparable和Comparator接口有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
比较器
接口
排序
意味
有序
内容
更多
正数
负数
帮助
支持
不错
也就是
也就是说
代码
代表
元素
兴趣
可以通过
大小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华服互联网科技靠谱吗
科技赋能下的互联网金融
科技股互联网
互联网科技有限公司经营范围
互联网和科技创新
杭州互联网科技公司
互联网科技革命
小马过河互联网科技
奇酷互联网络科技公司
齐家互联网科技有限公司
互联网科技英文翻译
互联网科技股有哪些
恒生科技互联网指数分析
互联网科技寓意
华服互联网科技官网
如何创新互联网科技
互联网科技的全部知识
无锡工业互联网科技有限公司
半导体是互联网高科技吗
青岛易易互联网科技
互联网科技巨头监管
互联网科技社
兼蜜互联网科技
重庆威客帮互联网科技
青岛科技大学互联网大赛研究生
工业互联网山东科技大学
中国互联网公司的科技投入
求路客互联网科技电话
互联网科技大佬云集
上海旺乐尼互联网科技有限公司