public class Item implements Comparable<Item> {
@override
public int compareTo(Item i){
// less 返回值小于0
// equal 返回值等于0
// great 返回值大于0
}
}
使用时:
Item i1 = new Item("xxx");
Item i2 = new Item("yyy");
i1.compareTo(i2);
public class SortByName implements Comparator<Item>{
public int compare(Item i1,Item i2){
//进行操作
}
}
//使用时:
Collections.sort(list,new SortByName());
//或者自定义使用时:在sort内部比较时,使用comparator.compare()
在
algs4
的assignment 3
中遇到了javaComparator
和Comparable
的问题: 现总结如下:Comparable
一个实现了comparable接口的对象的实例可以被用于和相同对象的不同实例做对比。它本身必须实现java.lang.Comparable的接口,这样它就拥有了对比的能力
Comparator
一个实现了comparator接口的对象能够对比不同的对象。它不能用于同一个类的不同实例的对比,但是可以用于其他的类的实例做对比。它必须实现java.util.Comparator的接口。 定义一个可排序的字段,可以用它来对于对象进行其他方式的排序。