JavaでのTreeSetとHashSetのパフォーマンス比較
このチュートリアルでは、 TreeSet および HashSetです。実際、これは ArrayList と Vector および HashTableとHashMap です。おそらく最も重要な違いは、performance.TreeSet vs HashSet
1) HashSet は、次のような基本的な操作に対して一貫したパフォーマンス時間を提供します。 add, remove, contains および sizeです。HashSet は TreeSet で、要素を並べ替える必要がない場合は、 HashSet にはソートシステムがありません。TreeSet 基本操作の log(n) 時間を保証します (add, remove et contains).
2) HashSet は、項目がソートされることを保証するものではありません。TreeSet は、要素が昇順で並べ替えられるか、interface Comparableまたはインターフェイス Java.
3 の Comparator) トラバーサルのパフォーマンスは、HashSetです。TreeSet には、コースのパフォーマンスに影響を与えるパラメータはありません。
4) TreeSet は、 HashSet : first(), last(), headSet() および tailSet().
5) HashSet はメソッド equals() は、2 つのオブジェクトを比較し、重複するオブジェクトを検出します。TreeSet はcompareTo()です。equals() は、両方のオブジェクトが等しく、かつ compareTo() は zero を返す必要があります.
5) HashSet はメソッド equals() は、2 つのオブジェクトを比較し、重複するオブジェクトを検出します。TreeSet はcompareTo()です。equals() は、両方のオブジェクトが等しく、かつ compareTo() は zero を返す必要があります.
TreeSet とJava
HashSet および TreeSet 一般的なことがたくさんあるので、見てみましょう:
1) どちらもインターフェイスを実装しています java.util.Set、CE つまり、重複する要素の挿入は許可されません。
1) どちらもインターフェイスを実装しています java.util.Set、CE つまり、重複する要素の挿入は許可されません。
2) この 2 つの実装は同期されません。Collections.synchronizedSet().
3) ソートされたセットが必要な場合は、 HashSet に変換し、TreeSet TreeSet 要素を追加します.
結局、使用の選択はニーズに完全に依存すると言えます.
3) ソートされたセットが必要な場合は、 HashSet に変換し、TreeSet TreeSet 要素を追加します.
結局、使用の選択はニーズに完全に依存すると言えます.
HashSetの例:
import java.util.HashSet;TreeSet 例:
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
import java.util.TreeSet;References:
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
JavaのHashSetとTreeSetの違い
HashsetとTreeset