Java 比较器
创始人
2024-05-28 22:58:33
0

public interface Comparable

Comparable 接口位于 java.lang 包下,对实现它的每个类的对象强加一个总排序,这种排序被称为类的自然顺序,compareTo 方法被称为其自然比较方法。

实现此接口的对象的列表(和数组)可以由 Collections.sort (和 Arrays.sort )自动排序。

要使用该接口必须实现( implements ) 它并重写 compareTo() 方法,因此会更改原始对象的代码结构即破坏源码,所以被称为侵入式排序。

int compareTo(T o):将此对象与指定的对象进行比较以获得顺序,返回负整数,零或正整数,表示此对象小于,等于或大于指定对象。

public class User implements Comparable{private Integer number;public User(Integer number) {this.number = number;}@Overridepublic int compareTo(User user) {if (this.number.compareTo(user.number) > 0) {return 1;} else if (this.number.compareTo(user.number) < 0) {return -1;} else {return 0;}}public static void main(String[] args) {List userList = new ArrayList<>();userList.add(new User(2));userList.add(new User(1));userList.add(new User(3));Collections.sort(userList);for (User user : userList) {System.out.println(user.number);}}}

public interface Comparator

Comparator 接口位于 java.util 包下,此接口可以对对象集合施加总排序,可以将比较器传递给排序方法(Collections.sort 或 Arrays.sort ),以便精确控制排序顺序。

此方法不会侵入到原本的对象中改变代码结构即不会破坏源码,所以被称为非侵入式排序。

int compare(T o1, T o2):比较它的两个参数的顺序,返回负整数,零或正整数,表示第一个参数小于,等于或大于第二个参数。

public class Test1 {public static void main(String[] args) {List userList = new ArrayList<>();userList.add(new User(2));userList.add(new User(1));userList.add(new User(3));UserComparator userComparator = new UserComparator();Collections.sort(userList,userComparator);for (User user : userList) {System.out.println(user.getNumber());}}}class User {private Integer number;public Integer getNumber() {return number;}public void setNumber(Integer number) {this.number = number;}public User(Integer number) {this.number = number;}
}class UserComparator implements Comparator {@Overridepublic int compare(User t1, User t2) {int l = t1.getNumber() - t2.getNumber();if (l > 0) {return 1;} else if (l < 0) {return -1;} else {return 0;}}
}

比较

Comparble 相当于“内部比较器”;Comparator 相当于“外部比较器”。

相关内容

热门资讯

华谊公司旗下艺人有哪些优秀艺人... 华谊公司旗下艺人有哪些优秀艺人?华谊兄弟旗下的艺人多达四十多人,但有名的不是很多华谊旗下有很多很不错...
为何18岁男子脑死亡火化前妈妈... 为何18岁男子脑死亡火化前妈妈大喊别离开下一秒突然复活?我觉得应该是哪里出现了纰漏,这名男子并没有死...
关于宇宙的科普电影 关于宇宙的科普电影银河系漫游指南 绝对是是吧,《旅行到宇宙边缘》旅行到宇宙边缘
北京工商大学会计专业考研科目都... 北京工商大学会计专业考研科目都有什么?专业复习用书都用什么?初始考802管理学指定参考书是周三多《管...
作者为什么要写丁香结? 作者为什么要写丁香结?“丁香结”的本义是小小的花苞圆圆的,鼓鼓的,恰如衣襟上的盘花扣。象征意义是人生...
原核生物和真核生物的区别 原核生物和真核生物的区别真核有复杂的内膜系统(细胞器),原核生物无真核有细胞核,原核无成型的细胞核基...
怎样不吃药摆脱抑郁症 怎样不吃药摆脱抑郁症以前靠心理治疗,但是后面有一段时期加重了。但是药的副作用太大,可以不吃药吗?想开...
诺曼底登陆的作用和对二战的意义 诺曼底登陆的作用和对二战的意义改变了二战的战局,加快盟军胜利的到来。
怎么样才能学习学得“细”呢? 怎么样才能学习学得“细”呢?细是注意细节地方,平时做题多思考,尽量全面一些,不要学习时觉的理解了就完...
去年几滴相思水,化做树下种花泪... 去年几滴相思水,化做树下种花泪,谁家少年踏春来,折下枝头红玫瑰!这首诗的意思是什么?暗示爱意。指思念...
小花仙找主人! 小花仙找主人!我只要你帮我照顾花朵,每月一个礼物可以吗?我有额外条件:一个星期星期一,三,五一定要上...
手机在信号不好的时候 对方打不... 手机在信号不好的时候 对方打不进来 能设置来电转移吗rt 是否需要开通什么业务 怎么办理不需要去移...
与看透生死或看透人生有关的歌曲... 与看透生死或看透人生有关的歌曲 比如悟我觉得三国演义主题曲有一种世态苍爽的感觉 ,得意的笑 潇洒走...
面临就业,该如何帮助女朋友度过... 面临就业,该如何帮助女朋友度过心里难关?不要说话,这种时候,什么语言都是多余和反作用的,要求对方走出...
八仙 全传 八仙 全传网上的视频有2个版本..一个是有60集.一个有40集..,你直接去查大结局就好了.没有这回...
正在追求一个女孩子,我告白了,... 正在追求一个女孩子,我告白了,但是。女生优先进,请求各位好心人,我真得很爱这个女孩他对你是在观察期不...
什么是TF卡? 什么是TF卡?什么是TF卡,还有SD卡??SD卡(TF卡)即是手机储存的扩展卡,主要用来扩展手机的储...
杨幂许凯路透,两人将合作哪部剧... 杨幂许凯路透,两人将合作哪部剧呢?路透当中的照片是杨幂和许凯两人为主演所演的《爱的二八定律》,非常的...
中国十大产业调查研究公司有哪些... 中国十大产业调查研究公司有哪些?根据自己的经验,以下信息有点价值,仅供参考:
有心人是什么意思 有心人是什么意思意中人中意人有心人是一个汉语词汇,解释为对某个事物或人等等,有一种感觉。例句:想不到...