Java Comparable Comparator 接口的使用感悟
来源:互联网 发布:.shop域名上线时间 编辑:程序博客网 时间:2024/05/16 11:44
Java 中有两个比较接口分别是 Comparable 和 Comparator
现在本人分享下自己的体会,
实现了Comparable接口的Java类可以说自己类本身就能够支持比较排序功能。
可以作为Collections.sort() 或者是Arrays.sort()方法的输入。因为集合中的该类本身就可以被排序。
所以可以理解为’内部的排序’。
而Comparator接口则是相当于一个外部的排序。集合或数组里的元素可以本身不支持排序。只需要外部传入一个实现了Comparator接口的对象即可实现排序。
可以说,Comparator接口的排序方式更加的灵活可定制化。
我们可以来看一个例子 一个User对象根据字符串的长度被排序。
package org.huluo.java;public class User implements Comparable<User> { public String string; @Override public int compareTo(User o) { if (string.length() > o.string.length()) { return -1; }else { return 1; } } @Override public String toString() { return this.string; }}
我们可以看到,User对象采用了Comparable的接口的排序的方式来实现排序。以后Collections.sort()方法对User的集合或者说是数组进行排序的时候就无需再自己传入排序的规则。因为User类本身就支持排序。
但是说我们可以看出来Comparable接口的实现耦合在了User这个实体类中。这是不好的一方面。如果哪一天业务需求要根据string的长度反着来,或者进行其他的规则来排序。那么如果使用了Comparable的接口的方式就要不停的进行改动代码。
所以,此时将排序的逻辑抽象出来使用Comparator的接口的实现类来进行传入。即可将实体对象和排序比较的逻辑合理的分离开。并且有利于多种的排序规则的有效管理。此时使用Comparator接口来实现排序。
读者们再想想。我们传入不同的Comparator接口的实现类进行不同的排序规则。
这其实是个典型的策略模式。
- Java Comparable Comparator 接口的使用感悟
- java 接口Comparable和Comparator的使用
- java的Comparable&Comparator 接口
- Java中Comparator接口和Comparable接口的使用
- java中Comparable接口和Comparator接口的使用
- java Comparable接口与Comparator接口的使用与区别
- Comparable接口和Comparator接口的使用
- comparator接口与Comparable接口的使用
- java的comparable接口和comparator接口
- Java Comparable 和Comparator接口的使用及区别
- Java Comparable 和Comparator接口的使用及区别
- Comparable接口和Comparator类的使用
- java的Comparable 和Comparator 接口
- 接口 Comparable与Comparator的区别 (Java)
- Java的Comparator和Comparable接口
- Java的比较接口 Comparable与Comparator
- Java comparable和Comparator接口的区别
- 如何使用 Comparable ,Comparator 接口
- 使用Sonar集成Jenkins进行代码静态检查
- 程序流程的控制之条件分支(Delphi)
- 基于Android ServerSocket的简易聊天室功能
- jsp语言基础(4)
- 为什么用快慢指针找链表的环,快指针和慢指针一定会相遇?
- Java Comparable Comparator 接口的使用感悟
- 储存图片刷新图库,使图片在图库第一个
- python 3 爬虫防坑手册——常更
- npm和bower的区别
- 2017年第十届华中地区大学生数学建模邀请赛经典赛C题 雄安新区的设立对北京的影响研究
- poj3090(欧拉函数)
- 字符串的基本操作
- Eclipse进行debug启动Tomcat时,由于启动项过多45秒超时解决方式
- HDU4283:You Are the One(区间DP)