如何在构造函数中实例化Comparator

时间:2011-10-14 22:31:10

标签: java comparator treemap

我从未见过在TreeMap结构的构造函数内创建的比较器。怎么会这样做呢?有没有办法让TreeMap()构造函数调用另一个具有比较器参数的TreeMap构造函数来设置比较器?

private Comparator<? super K> cmp;
private Node root;
private int size;
private final String indentStr = "   ";

public TreeMap() {
    // Create cmp assuming K implements Comparator
    //???  TreeMap(new Comparator<V>());
}

public TreeMap(Comparator<? super K> cmp) {
    this.cmp = cmp;
}

1 个答案:

答案 0 :(得分:3)

他们通常将这些字段设置为null,而不是实例化。

但如果你愿意,你可以:

this(new Comparator<K>() {
   public int compare(K k1, K k2) {
       return ((Comparable<K>) k1).compareTo(k2);
   }
});

问题是ClassCastException可能会发生,因为您不知道元素的类型。