可能重复:
如何在Java中对Map的键进行排序?
在类中TreeMap,Java API说:
基于红黑树的NavigableMap实现.地图根据其键的自然顺序进行排序,或者根据使用的构造函数在地图创建时提供的比较器进行排序.
自然排序是什么意思?用作键的类不必实现Comparable接口,但是将使用什么顺序?
如果你自己试用你会发现,你不能使用TreeMap,有一个K未实现Comparable(除非你明确地提供了Comparator通过TreeMap构造函数).
public class App
{
public static void main( String[] args )
{
TreeMap<App,String> tm = new TreeMap<App,String>();
tm.put(new App(), "value");
}
}
Run Code Online (Sandbox Code Playgroud)
线程"main"中的异常java.lang.ClassCastException:App无法强制转换为java.lang.Comparable
put()显式的javadoc :
抛出:
ClassCastException - 如果指定的键无法与映射中当前的键进行比较
TreeMap中用于"自然排序"的javadocs链接将您带到Comparable界面
"自然"排序是Comparable由用作密钥的对象实现接口所暗示的排序TreeMap.实质上,RBTree必须能够告诉哪个键小于另一个键,并且有两种方法可以将该逻辑提供给RBTree实现:
Comparable用作键的类中的接口TreeMap,或Comparator在密钥类本身之外进行比较的实现.| 归档时间: |
|
| 查看次数: |
14330 次 |
| 最近记录: |