Java使用Comparable接口自定义排序
来源:互联网 发布:淘宝巴拉巴拉羽绒服 编辑:程序博客网 时间:2024/05/17 23:12
Java经典编程300例之实例063 使用Comparable接口自定义排序
案例见http://blog.csdn.net/the_star_is_at/article/details/70245219
实例说明
默认情况下,保存在List集合中的数组是不进行排序的,不过可以通过使用Comparable接口自定义排序规则并自动排序。本实例将介绍如何使用Comparable接口自定义排序规则并自动排序。
实现过程
新建一个Java类,名称为Employee。在该类中首先定义3个属性,分别是id(表示员工的编号)、name(表示员工的姓名)和age(表示员工的年龄),然后在构造方法中初始化这3个属性,最后再实现接口中定义的compareTo()方法,将对象按编号升序排列。
Employee.java
重写接口中的方法时,要将访问权限限定符设为public,因为接口中的方法默认就是public的。
再新建一个名称为Test的类,用于进行测试。在该类中首先定义一个List集合来保存3个Employee对象,并通过遍历输出集合中的元素,再通过Collections.sort()方法执行自动排序,最后再通过遍历输出排序后的集合中的元素。
Test.java
编译运行
$javac Employee.Java Test.java
$java Test
排序前
员工的编号:2,员工的姓名:Java,员工的年龄:20
员工的编号:1,员工的姓名:C,员工的年龄:30
员工的编号:3,员工的姓名:C#,员工的年龄:10
排序后
员工的编号:1,员工的姓名:C,员工的年龄:30
员工的编号:2,员工的姓名:Java,员工的年龄:20
员工的编号:3,员工的姓名:C#,员工的年龄:10
技术要点
本实例主要一个月java.lang包中的Comparable接口来实现自定义排序规则。Comparable接口用于强行对实现它的每个类的对象进行整体排序,用于指定排序规则。Comparable接口的定义如下:
publicinterface Comparable<T> {
int compareTo(T o);
}
当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法compareTo()。在该方法中定义自己的排序规则,当调用Arrays.sort(Object[]a)或Collectons.sort(List<T> list)方法时会回调compareTo()方法,并按照自己的规则对对象数组或列表进行排序。
返回值及比较规则:
1、返回负值---->小于
2、返回零------>等于
3、返回正值---->大于
如果一个类要实现这个接口,可以使用如下语句声明:
publicclass Employee implements Comparable<Employee> {}
在Employee中必须实现接口中定义的compareTo()方法。实现该方法后,如果将该对象保存在列表中,那么可以通过执行Collections.sort()方法进行自动排序;如果保存在数组中,那么可以通过执行Arrays.sort()方法进行自动排序。
如果不想实现在接口中定义的方法,则可以将类声明为抽象类,将接口中定义的方法声明为抽象方法。
- Java使用Comparable接口自定义排序
- 使用Comparable接口自定义排序
- Java经典编程300例之实例063 使用Comparable接口自定义排序
- Java自定义实现Comparable接口的类,实现多维排序
- JAVA排序(一) Comparable接口
- Java comparable接口 对象排序
- Java Comparable接口的使用与自定义实现
- java使用Comparator与Comparable接口对对象排序
- java使用Comparator与Comparable接口对对象排序
- Comparable接口实现自定义类排序
- java 对ArrayList排序,实现Comparable接口
- java 对ArrayList排序,实现Comparable接口
- Java Comparable接口 类的自然排序
- Java中泛型插入排序,继承Comparable接口
- java中的对象数组排序,--Comparable接口
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- java自定义排序(Comparable与Comparator)
- Comparable接口实现自定义对象的排序功能
- Java常见异常总结
- LightOJ1030- Discovering Gold(期望dp)
- 第一篇博客——BitmapFactory Unable to decode stream 问题解决
- ubuntu hosts
- 浅谈jQuery源码(六)——$.map
- Java使用Comparable接口自定义排序
- 【Android 一般进阶】动态广播注册注销时机
- 后缀数组(suffix array) 模板(1)
- spring(一)---bean的学习上篇
- 包装类和日期操作
- Java 数组去重复值
- 获取一定范围内的随机小数
- Android的RecyclerView
- Debug版本和Release版本区别