比较简单的方法是
Comparable
使用现有对象来实现,尽管您可以创建一个Comparator
并将其传递给SortedMap
。
注意Comparable
和Comparator
是两个不同的事物;一个实现的类与另一个对象Comparable
进行比较this
,而一个实现的类则Comparator
与
其他 两个对象进行比较。如果实现
Comparable
,则不需要将任何特殊的东西传递给构造函数。只需致电new TreeMap<MyObject>()
。( 编辑: 当然Maps
需要两个通用参数,但不是一个。愚蠢的我!)
如果您创建另一个实现的类Comparator
,则将该类的实例传递给构造函数。是的,根据
TreeMap
Javadocs的说法。
编辑:
在重新阅读问题时,这都没有道理。如果您已经有了列表,则明智的做法是实施
Comparable并调用
Collections.sort它。无需地图。
一些代码:
public class MyObject implements Comparable<MyObject> { // ... your existing pre here ... @Override public int compareTo(MyObject other) { // do smart things here }}// Elsewhere:List<MyObject> list = ...;Collections.sort(list);与一样
SortedMap,您可以创建一个
Comparator<MyObject>并将其传递给
Collections.sort(List,Comparator)。



