因此,java中的TreeMap类的格式为TreeMap<K,V>
。显然K需要是Combarable
,但是只在运行时使用强制转换进行检查,如果不是Comparable
,则抛出异常。将此类定义为TreeMap<K extends Comparable<? super K>, V>
是否更有意义?
我在这里缺少什么?
答案 0 :(得分:1)
TreeMap
的实例可以为键提供比较器,因此它们不必具有自然的总排序。
[编辑]
更具体地说,可以通过为构造函数提供能够比较两个键的顺序的TreeMap
实例来创建Comparator
的实例。如果以这种方式创建地图,比较器将用于所有键比较。在这种情况下,密钥不必具有固有的可比性。
答案 1 :(得分:0)
提供密钥比较器可以工作。
我以这种方式放置了不可比较的密钥:
TreeMap<K, V> myMap = new TreeMap<K, V>(new Comparator<K>(){
@Override
int compare(K o1, K o2) {
...//Define the compare logic
}
});
myMap.put(...);