LinkedHashSetはHashSetのサブクラスであり、同じメソッドが実装されています。
メソッドの使い方であればHashSetと同じなので、HashSetの使い方を参照下さい。
↓
【Java】HashSetの使い方いろいろ
目次
HashSetとの違い
前述のとおり、メソッドは同じです。
違いは、順序を保つことです。
HashSetでは中に入れた値の順序は維持されませんが、
LinkedHashSetでは入れた順で維持されます。
順序維持の例示
HashSetとの違いで確認していきます。
HashSet、LinkedHashSetに、同じ文字列を同じ順序(A,B,C)で格納します。
その後、追加のCollectionを格納します。
・ArrayList(文字列の1,2,3)
・HashMap(文字列のあ,い,う)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
package samples.collections; import java.io.PrintStream; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; public class UsageTest { public static void main(String...strings) { PrintStream out = System.out; // LinkedHashSet Set<String> linkedHash = new LinkedHashSet<>(); linkedHash.add("A"); linkedHash.add("B"); linkedHash.add("C"); // HashSet Set<String> hash = new HashSet<>(); hash.add("A"); hash.add("B"); hash.add("C"); // ArrayList List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); // HashMap Map<Integer, String> map = new HashMap<>(); map.put(new Integer(1), "あ"); map.put(new Integer(2), "い"); map.put(new Integer(3), "う"); // Collectionの追加 linkedHash.addAll(list); linkedHash.addAll(map.values()); hash.addAll(list); hash.addAll(map.values()); // 表示 out.println("LinkedHashSet"); out.println(linkedHash); out.println(); out.println("HashSet"); out.println(hash); out.println(); } } // 実行結果 LinkedHashSet [A, B, C, 1, 2, 3, あ, い, う] HashSet [A, 1, B, 2, あ, C, 3, い, う] |
LinkedHashSetは値の挿入順を維持していており、
HashSetはバラバラになっていることがわかります。
LinkedHashSetの使い道
つまり、挿入した値の順序を維持したSetを作りたい場合に使うものです。
念押しですが、Setは重複した値を持ちません。
なので、正確に言うと「挿入順序を維持した重複のないリスト」を作るために用います。
コメント