Java 如何在构造函数中实例化比较器
我从未见过在树映射结构的构造函数中创建比较器。一个人怎么做呢?有没有办法让TreeMap()构造函数调用另一个具有comparator参数的TreeMap构造函数来设置comparatorJava 如何在构造函数中实例化比较器,java,comparator,treemap,Java,Comparator,Treemap,我从未见过在树映射结构的构造函数中创建比较器。一个人怎么做呢?有没有办法让TreeMap()构造函数调用另一个具有comparator参数的TreeMap构造函数来设置comparator private Comparator<? super K> cmp; private Node root; private int size; private final String indentStr = " "; public TreeMap() { // Create cmp
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;
}
private Comparator他们通常将该字段设置为null
,而不是实例化某些内容
但如果您愿意,您可以:
this(new Comparator<K>() {
public int compare(K k1, K k2) {
return ((Comparable<K>) k1).compareTo(k2);
}
});
this(新的比较器(){
公共整数比较(kk1,kk2){
回报率((可比)k1),比(k2);
}
});
问题是可能会发生ClassCastException
,因为您不知道元素的类型。他们通常将该字段设置为null
,而不是实例化某些内容
但如果您愿意,您可以:
this(new Comparator<K>() {
public int compare(K k1, K k2) {
return ((Comparable<K>) k1).compareTo(k2);
}
});
this(新的比较器(){
公共整数比较(kk1,kk2){
回报率((可比)k1),比(k2);
}
});
问题是ClassCastException
可能会发生,因为您不知道元素的类型。如何返回((可比)k1)代码>?ClassCastException?当然,你可以这样做,但也可能失败。我在答案中添加了return((可比)k1)代码>?ClassCastException?当然,你可以这样做,但也可能失败。我还是把它加到了答案里