用Java编写的TreeMap模板

时间:2011-05-13 23:43:52

标签: java templates treemap

因此,java中的TreeMap类的格式为TreeMap<K,V>。显然K需要是Combarable,但是只在运行时使用强制转换进行检查,如果不是Comparable,则抛出异常。将此类定义为TreeMap<K extends Comparable<? super K>, V>是否更有意义?

我在这里缺少什么?

2 个答案:

答案 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(...);