最近做项目遇到了对对象排序的问题, 特此研究Java的API, 对Comparable与Comparator的用法总结如下:
java.lang.Comparable | java.util.Comparator |
int objOne.compareTo(objTwo) | int compare (objOne, objTwo) |
返回: 负数: 如果 objOne < objTwo 零: 如果 objOne == objTwo 正数: 如果 objOne > objTwo |
同 Comparable |
必须修改要比较的类的结构,令其实现Comparable 接口 | 编写一个独立的类,令其实现Comparator接口 |
一个类只能有一种排序 | 一个类可以有多重排序方式,只要多编写一个Comparator的实现类就好了。 |
JAVA API中经常用到,例如:String, 包装类(Integer, Long, Double…), Date, Calendar … | 用于对第三方类的排序,因为第三方类一般都是无法修改的,更别说实现Comparable了,所以只能使用Comparator了。 |
下面是两个例子来论证如何去使用,这里我使用了内部类,大家也可以跟着看下内部类如何在静态方法中的调用。
1. 使用Comparable排序
2. 使用Comparator排序