Java 比较器
2021/7/30 22:06:12
本文主要是介绍Java 比较器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- Java比较器
- 自然排序java.lang.Comparable
- 自定义排序java.util.Comparator
- 使用背景
- 实现
Java比较器
自然排序java.lang.Comparable
1.像String、包装类等实现了Comparable接口,重写了compareTo()方法
2.利用Array.sort(Object obj)进行排序,调用comparaTo()方法
默认是从小到大升序
规则:
当前对象this大于形参obj时,返回正数
当前对象this小于形参obj时,返回负数
当前对象this等于形成obj时,返回0
这里按照规则重写方法,这样对对象就可以默认从小到大排序
具体的比较是调用对象的equals方法
@Override public int comparaTo(Object o){ if(o instanceof Goods){ Goods goods = (Goods) o; //方式一 if(this.price>goods.price){ return 1 ; }else if(this.price<goods.price){ return -1; }else{ return 0; } //方式二 return Double.compare(this.price,goods.price); } } }
自定义排序java.util.Comparator
使用背景
1.元素的类型没有实现java.lang.Comparable接口而又不方便修改代码
2.实现了java.lang.Comparable接口的排序规则不适合当前的操作
实现
重写compare(Object o1,Object o2)方法,比较o1和o2的大小
//obj为需要比较的类 Arrays.sort(Object obj,new Comparator(){ //利用匿名实现类的方法 @Override public int compare(Object o1,Object o2){ //具体的排序方法 } })
compare返回值
1:表示要调整顺序
-1:不用调整顺序
Collections.sort(companyList, new Comparator<String>() { @Override public int compare(String o1, String o2) { if(o1.compareTo(o2) < 0 ){?} });
如果你想升序,那么o1比o2小就是我想要的;所以返回-1,类比成false;表示我不想调整顺序
如果你想降序,那么o1比o2小不是我想要的;所以返回1,类比成true;表示我想调整顺序
案例
@Override public int compare(int[] o1,int[] o2){ if(o1[0]==o2[0]){ return Integer.compare(o1[1],o2[1]); //Integer.compare默认是从小到大排序 //o1[1]>o2[1]时返回1 表示要调整顺序 //o1[1]<o2[1]时返回-1 表示不需要调整顺序 } return Integer.compare(o2[0],o1[0]); }
这篇关于Java 比较器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现