2009-05-21 24 views
2

TreeMapコンストラクタにいくつか問題があります。私は2 TreeMap<String, Client>のクラスを持っています。名前と番号でソート別でソートツリー。(Clientクラス:文字列名、int型の数、...)私はこのクラスのコンストラクタを構築するにはどうすればよいTreeMap construtor

private TreeMap<String, Client> nameTree; 
private TreeMap<Integer, Client> numberTree; 

?今まで私はこれを書きました:

public ManagerTreeMap(){ 
     nameTree = new TreeMap<String, Client>(new StringComparator()); 
     numberTree = new TreeMap<Integer, Client>(new IntegerComparator()); 
    } 

私の大きな問題は、construtor "TreeMap(Comparator c)"です。 2つのコンパレータを書くことはできますか?もし私が何をしなければならないのですか?

public ManagerTreeMap(Comparator<String> cp){ 
     nameTree = new TreeMap<String, Client>(cp);   
    } 

    public ManagerTreeMap(Comparator<Integer> cpt){ 
     nameTree = new TreeMap<Integer, Client>(cpt); 
    } 

答えて

2

たぶん

public ManagerTreeMap(Comparator<String> cs, Comparator<Integer> ci){ 
    nameTree = new TreeMap<String, Client>(cs);   
    numberTree = new TreeMap<Integer, Client>(ci); 
} 
+0

整数キーでソートする場合は、パフォーマンスのためにtreeMapのコンストラクタにComparatorを提供する必要がありますか? –

+1

コンパレータを渡さないと、デフォルトのコンパレータが使用されます。パフォーマンスに違いはないはずです(2つのコンパレータが同じことを行う場合)。 – Thilo

3

あなたがカスタムコンパレータを必要としないようです。

public ManagerTreeMap(){ 
    nameTree = new TreeMap<String, Client>(); 
    numberTree = new TreeMap<Integer, Client>(); 
} 
+2

StringやIntegerのような単純型ではありません。 Stringに大文字小文字を区別しないコンパレータが必要な場合は、String.CASE_INSENSITIVE_ORDERをTreeMapコンストラクタに渡すことができます。 – banjollity

+0

@newacct:Integerキーでソートする場合、パフォーマンスのためにtreeMapのコンストラクタにComparatorを提供する必要はありませんか? –

関連する問題