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