<分区>
我需要通过适当的例子来理解 comparable 和 comparator 之间的区别。我看过几本书,但我不清楚其中的区别。
标签 java
<分区>
我需要通过适当的例子来理解 comparable 和 comparator 之间的区别。我看过几本书,但我不清楚其中的区别。
最佳答案
Comparable接口(interface):要排序的对象必须实现该接口(interface)的类。在此,我们必须实现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 ;
}}
如果任何类实现了可比接口(interface),那么可以使用 Collection.sort() 或 Arrays.sort() 自动对该对象的集合进行排序。对象将根据该类中的 compareTo 方法进行排序。
在 java 中实现 Comparable 的对象可以用作 SortedMap(如 TreeMap)或 SortedSet(如 TreeSet)中的键,而无需实现任何其他接口(interface)。
Comparator接口(interface):需要排序的对象的类不需要实现这个接口(interface)。一些第三方可以实现这个接口(interface)来排序。例如StateSortByIdComparator类可以实现Comparator接口(interface)来对状态对象的集合进行id排序。例如:
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 ;
}
}
关于java - comparator 和 comparable 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22692777/