JavaでのTreeSetとHashSetのパフォーマンス比較

このチュートリアルでは、 TreeSet および HashSetです。実際、これは ArrayListVector および HashTableHashMap です。おそらく最も重要な違いは、performance.

TreeSet vs HashSet

1) HashSet は、次のような基本的な操作に対して一貫したパフォーマンス時間を提供します。 add, remove, contains および sizeです。HashSetTreeSet で、要素を並べ替える必要がない場合は、 HashSet にはソートシステムがありません。TreeSet 基本操作の log(n) 時間を保証します (addremove et contains).

2) HashSet は、項目がソートされることを保証するものではありません。TreeSet は、要素が昇順で並べ替えられるか、interface Comparableまたはインターフェイス Java.

3 の Comparator) トラバーサルのパフォーマンスは、HashSetです。TreeSet には、コースのパフォーマンスに影響を与えるパラメータはありません。

4) TreeSet は、 HashSet : first(), last(), headSet() および tailSet().

5) HashSet はメソッド  equals() は、2 つのオブジェクトを比較し、重複するオブジェクトを検出します。TreeSetcompareTo()です。equals() は、両方のオブジェクトが等しく、かつ compareTo() は zero を返す必要があります.

TreeSet とJava

HashSet および TreeSet 一般的なことがたくさんあるので、見てみましょう:

1) どちらもインターフェイスを実装しています java.util.Set、CE つまり、重複する要素の挿入は許可されません。

2) この 2 つの実装は同期されません。Collections.synchronizedSet().

3) ソートされたセットが必要な場合は、 HashSet に変換し、TreeSet TreeSet 要素を追加します.

結局、使用の選択はニーズに完全に依存すると言えます.

HashSetの例:

import java.util.HashSet;

public クラスの例 {

public static void main(String[] args) {

HashSet<文字列>hset = new HashSet<文字列>();

hset.add("1");
hset.add("3");
hset.add("2");
hset.add("5");

for(文字列s:hset)
System.out.println(s);
}
}

Result:
3
2
1
5
TreeSet 例:

import java.util.TreeSet;

public クラスの例 {

public static void main(String[] args) {

TreeSet<文字列>tset = new TreeSet<文字列>();

tset.add("1");
tset.add("3");
tset.add("2");
tset.add("5");

for(String s: tset)
System.out.println(s);
}
}

Result:
1
2
3
5
References:
JavaのHashSetとTreeSetの違い
HashsetとTreeset