#はじめに
本記事ではjava.util.Setインターフェースを実装するコレクションクラスの中で最も一般的な
java.util.HashSetクラス
について書きます。
#HashSetクラスの特徴
1. 重複した値を格納しようとすると、エラーは発生しないが格納されない
以下の例では、ゴリラを2回addしていますが、要素数は3となっています。
Set<String> animals = new HashSet<String>();
animals.add("猿");
animals.add("熊");
animals.add("ゴリラ");
animals.add("ゴリラ");
System.out.println("動物は" + animals.size() + "種類です"); //動物は3種類です
2. 値の順序が保証されていない
以下の例では、猿⇨熊⇨ゴリラの順で格納しましたが、出力は異なっています。
Set<String> animals = new HashSet<String>();
animals.add("猿");
animals.add("熊");
animals.add("ゴリラ");
for(String s : animals){
System.out.println(s + " "); // 熊 ゴリラ 猿
}
#最後に
格納する値の重複を許さずに順序も保証して欲しい場合は、LinkedHashSetクラス
を使うことで実現可能です。