【Java】HashSetとTreeSetの違いについて

java

HashSetとTreeSetの違いについてまとめてみました。

[スポンサーリンク]

目次

まずはHashSetとTreeSetの仕様をそれぞれ見てみましょう。

  1. TreeSetの仕様
  2. HashSetの仕様

TreeSet

HashSetとの違いを黄色で強調しています。

ソート有り。
重複削除有り。
null指定NG

TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("bbb");
treeSet.add("aaa");
treeSet.add("ccc");
treeSet.add("aaa");
//treeSet.add(null);

//画面表示
Iterator<String> iterator = treeSet.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

実行結果

>実行結果
aaa
bbb
ccc

HashSet

TreeSetとの違いを黄色で強調しています。

ソート無し。
重複削除有り。
null指定OK

HashSet<String> hashSet = new HashSet<>();
hashSet.add("bbb");
hashSet.add("aaa");
hashSet.add("ccc");
hashSet.add("aaa");
hashSet.add(null);

//画面表示
Iterator<String> it = hashSet.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

実行結果

>実行結果
aaa
null
ccc
bbb

さいごに

HashSetとTreeSetの違いはソートを勝手にするかどうかと、Null指定が出来るかという2つです。
TreeSetでnullを指定してしまうとExceptionが発生するので気をつけましょう。