Comparable和Comparator

本文详细介绍了Comparable和Comparator两个排序接口的概念及使用场景。Comparable使其实现类具备了排序能力,适用于类自身支持排序的情况。而Comparator则提供了一种不修改源代码即可实现排序的方式,适用于需要外部定制排序规则的情况。此外,还解释了Set集合的特点及其如何确保元素唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Comparable简介
Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了
Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。
此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。
此接口只有一个方法compare,比较此对象与指定对象的顺序,如果该对象小于、等于或大于指定
对象,则分别返回负整数、零或正整数。
二、Comparator简介
Comparator是比较接口,我们如果需要控制某个类的次序,而该类本身不支持排序(即没有实现
Comparable接口),那么我们就可以建立一个“该类的比较器”来进行排序,这个“比较器”只需要实现
Comparator接口即可。也就是说,我们可以通过实现Comparator来新建一个比较器,然后通过这个比
较器对类进行排序。
注意:
若一个类要实现Comparator接口:它一定要实现compare(T o1, T o2) 函数,但可以不实现
equals(Object obj) 函数。
int compare(T o1, T o2) 是“比较o1和o2的大小”。返回“负数”,意味着“o1比o2小”;返回“零”,意
味着“o1等于o2”;返回“正数”,意味着“o1大于o2”。
三、Comparable和Comparator区别比较
Comparable是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”。
Comparator是比较器,我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。
Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。
用Comparable简单, 只要实现Comparable 接口的对象直接就成为一个可以比较的对象,但是需
要修改源代码。 用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定
义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并且在Comparator 里面
用户可以自己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重
复劳动了。
10.4. Set集合
Set集合类似于一个罐子,程序可以依次把多个对象“丢进”Set集合,而Set集合通常不能记住元素的
添加顺序。
Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失
败,add()方法返回 false,且新元素不会被加入。
Set常用方法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值