0

我从未见过在 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;
}
4

1 回答 1

3

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

但如果你愿意,你可以拥有:

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

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

于 2011-10-14T22:35:08.393 回答