我需要通过适当的例子来理解可比较和比较之间的差异。我看过几本书,但差别不明确。
答案 0 :(得分:5)
Comparable接口:要排序的对象必须实现此接口的类。在这里,我们必须实现compareTo(Object)方法。
例如:
public class State implements Comparable{
@Override
public int compareTo(Object arg0) {
State state=(State) arg0;
return (this.stateId < state.stateId ) ? -1: (this.stateId > state.stateId ) ? 1:0 ;
}}
如果任何类实现了类似的接口,则可以使用Collection.sort()或Arrays.sort()自动对该对象的集合进行排序。对象将基于该类中的compareTo方法进行排序。
在java中实现Comparable的对象可以用作TreeMap等SortedMap中的键,也可以像TreeSet一样使用SortedSet,而无需实现任何其他接口。
Comparator接口:要对其排序的对象不需要实现此接口的类。一些第三类可以实现此接口sort.e.g.StateSortByIdComparator类可以通过id实现Comparator接口对状态对象的集合进行排序。例如:
public class StateSortByIdComparator implements Comparator<State>{
@Override
public int compare(State state1, State state2) {
return (state1.getStateId() < state2.getStateId() ) ? -1: (state1.getStateId() > state2.getStateId() ) ? 1:0 ;
}
}
答案 1 :(得分:0)
Comparable
定义类的实例具有自然顺序,例如数字可以从小到大排序。在其他情况下,这定义了默认排序,例如使用字符串时。
另一方面,Comparator
是一个可能定义非标准排序的对象,例如,您可以提供一个比较器来对数字进行从大到小的排序。例如。