0

Javaのドキュメントによると、Comparable interfaceは、それを実装する各クラスのオブジェクトに完全な順序付けを課します。この順序付けはクラスの自然順序付けと呼ばれ、クラスの compareTo() メソッドはその自然比較メソッドと呼ばれます。クラス String が Comparable を実装していることがわかりました。では、String オブジェクトを作成するとどうなるでしょうか。ここでの自然な順序は何ですか??

class Com implements Comparator<String>{
public int compare<String>(String a,String b){
String s1=a; String s2=b;
return s2.compareTo(s1);
}
}

Main() メソッドに次のスニペットがあるとします。

TreeSet<String> ts=new TreeSet<String>(new Com());
ts.add("C");
ts.add("A");
ts.add("B");

最初の C が追加されたとき、TreeSet には既存の要素がありません。では、どうなりますか?比較はどのように実行されるのでしょうか?

そしてBが追加されているとき、何が起こっているのか. ここでの一連の流れを教えていただけると助かります。前もって感謝します。

4

2 に答える 2

1

これはTreeMapソース(JDK 1.6.0-30)から切り取られます(別のコレクションが明示的に選択されていない限りTreeSet、によってサポートされます)TreeMap

public V put(K key, V value) {
    Entry<K,V> t = root;
    if (t == null) {
        root = new Entry<K,V>(key, value, null);
        ...
        return null;
    }

ご覧のとおり、マップが空の場合(ルートがnullの場合)、値は単純に追加されます。比較は行われません。

追加ABについては、演習として残しておきますが、実際にはいくつかの良い学習があります。

乾杯、

于 2012-12-13T11:17:44.067 に答える
0

これについてはクラスの詳細をご覧ください

于 2012-12-13T11:16:29.943 に答える