Java中Comparable和Comparator接口有什么区别
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家介绍Java中Comparable和Comparator接口有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Comparable 简介Comparable
千家信息网最后更新 2025年01月23日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){ Listlist = 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安全错误
数据库的锁怎样保障安全
数据库标准模定义
安卓版数据库查看
我想网络技术有限公司官网
软件开发要依托行业
360国家网络安全
新一代网络技术sdn
营销网络技术代理品牌
数据库客户订购登记
图书馆 大型 数据库设计
计算机网络及其网络技术
家里办公如何安全接入服务器
春节期间网络安全工作会议
医院医疗系统软件开发
朗威网络技术有限公司
cf穿越火线吃鸡服务器
软件开发项目共建协议
小众的网络安全产品
网络安全与信息化部门怎么样
华为手机6g网络技术
现如今网络技术专业好就业吗
课堂网络安全知识
Qt 中文写入数据库为空
鬼话钟馗 数据库
服务器不组阵列有什么影响
恩施州服务器机柜质量怎么样
图书馆 大型 数据库设计
镇江国内软件开发公司排行
数据库实验报告表
昌吉软件开发优缺点
四川新一代网络技术服务技术