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 に答える