Java中Comparable与Comparator的区别
来源:互联网 发布:java三层架构 编辑:程序博客网 时间:2024/06/15 15:34
相同
- Comparable和Comparator都是用来实现对象的比较、排序
- 要想对象比较、排序,都需要实现Comparable或Comparator接口
- Comparable和Comparator都是Java的接口
区别
- Comparator位于java.util包下,而Comparable位于java.lang包下
- Comparable接口的实现是在类的内部(如 String、Integer已经实现了Comparable接口,自己就可以完成比较大小操作),Comparator接口的实现是在类的外部(可以理解为一个是自已完成比较,一个是外部程序实现比较)
- 实现Comparable接口要重写compareTo方法, 在compareTo方法里面实现比较
public class Student implements Comparable { String name; int age public int compareTo(Student another) { int i = 0; i = name.compareTo(another.name); if(i == 0) { return age - another.age; } else { return i; } }} 这时我们可以直接用 Collections.sort( StudentList ) 对其排序了.( **只需传入要排序的列表**)
实现Comparator需要重写 compare 方法public class Student{ String name; int age}class StudentComparator implements Comparator { public int compare(Student one, Student another) { int i = 0; i = one.name.compareTo(another.name); if(i == 0) { return one.age - another.age; } else { return i; } }} Collections.sort( StudentList , new StudentComparator()) 可以对其排序( **不仅要传入待排序的列表,还要传入实现了Comparator的类的对象**)
总结
- 如果比较的方法只要用在一个类中,用该类实现Comparable接口就可以。
- 如果比较的方法在很多类中需要用到,就自己写个类实现Comparator接口,这样当要比较的时候把实现了Comparator接口的类传过去就可以,省得重复造轮子。这也是为什么Comparator会在java.util包下的原因。
使用Comparator的优点是:1.与实体类分离 2.方便应对多变的排序规则
阅读全文
0 0
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- Java中Comparable与Comparator的区别
- java中Comparable与Comparator的区别与用法
- Java语言中comparable与comparator接口的区别
- Java中Comparator接口与Comparable接口的区别
- Java中 Comparator接口 与Comparable 的区别
- Java中Comparable与Comparator的区别(一)
- Java中 Comparator接口 与Comparable 的区别
- js数组内元素排序简单方法
- CSS3实现三角形效果
- 使用Source_Insight查看opencv源代码
- 怎么用启动盘重装系统?
- PowerManager.WakeLock使用
- Java中Comparable与Comparator的区别
- FFmpeg滤镜代码级分析
- F1V3.0-19 UI新控件及新功能简介
- java 获取本机的公网ip
- 哈希算法
- RESTful Web Services -- JAX-RS中的注解
- 3个简单的函数调用 实现ComboBox皮肤-CBitComboBox类
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- git图形化工具GitKraken的使用——创建远程分支与建立追踪关系