我从未见过在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;
}
答案 0 :(得分:3)
他们通常将这些字段设置为null
,而不是实例化。
但如果你愿意,你可以:
this(new Comparator<K>() {
public int compare(K k1, K k2) {
return ((Comparable<K>) k1).compareTo(k2);
}
});
问题是ClassCastException
可能会发生,因为您不知道元素的类型。