Java LinkedHashSet クラス:初心者向けの友好ガイド
はじめに
こんにちは、未来のJavaの魔法使いたち!今日、私たちはJavaのLinkedHashSetの世界について素晴らしい旅に出かけます。まだ一度もコードを書いたことがなくても心配しないでください - 私があなたの友好的なガイドで、一緒にこのトピックをステップバイステップに探求します。
あなたがアルバム用にユニークなステッカーを集めていて、それらをどの順番で手に入れたかを覚えたいと思ったら、それはLinkedHashSetがJavaで行うことと非常に似ています - それは、ユニークな要素(あなたのステッカーのように)を保存し、それらを追加した順序を覚えるコレクションです。クールでしょうか?
それでは、この魔法のようなコレクションがどのように動作するかを見ていきましょう!
クラス宣言
Javaでは、LinkedHashSetはjava.utilパッケージの一部です。それを使用するには、まずインポートする必要があります。以下がその方法です:
import java.util.LinkedHashSet;
では、私たちの最初のLinkedHashSetを作成しましょう:
LinkedHashSet<String> myStickers = new LinkedHashSet<>();
この例では、Stringオブジェクトを保存するLinkedHashSetを作成しました。 <String>
の部分は、私たちのセットがどのような型の要素を含むかをJavaに伝えます。 String
の部分をInteger
やさらに独自のカスタムクラスに置き換えることができます!
パラメータ
LinkedHashSetには独自の特定のパラメータはありませんが、親クラスからいくつかを継承しています。最も重要なのは以下の通りです:
- initialCapacity: LinkedHashSetの初期キャパシティ。
- loadFactor: LinkedHashSetがリサイズされる前にどれだけ満タンになるかの測定。
今はこれらについてあまり気にしないでください。Javaは良いデフォルト値を設定しているので、非常に特定のことをしない限り指定する必要はありません。
クラスコンストラクタ
LinkedHashSetはいくつかのコンストラクタを提供します。最も一般的なのを見ていきましょう:
-
デフォルトコンストラクタ:
LinkedHashSet<String> set1 = new LinkedHashSet<>();
これは、デフォルトの初期キャパシティ(16)とロードファクター(0.75)で空のLinkedHashSetを作成します。
-
初期キャパシティを持つコンストラクタ:
LinkedHashSet<String> set2 = new LinkedHashSet<>(20);
これは、初期キャパシティが20の空のLinkedHashSetを作成します。
-
他のコレクションを持つコンストラクタ:
ArrayList<String> list = new ArrayList<>(); list.add("Red"); list.add("Blue"); LinkedHashSet<String> set3 = new LinkedHashSet<>(list);
これは、指定されたコレクション(この場合はリスト)にすべての要素を含むLinkedHashSetを作成します。
クラスメソッド
では、LinkedHashSetの最も便利なメソッドのいくつかを見ていきましょう。以下の表で簡単に参照しやすくまとめます:
メソッド | 説明 |
---|---|
add(E e) | セットに指定された要素がまだ存在しない場合、その要素を追加します |
remove(Object o) | セットに指定された要素が存在する場合、その要素を削除します |
contains(Object o) | セットに指定された要素が存在する場合、trueを返します |
size() | セット内の要素の数を返します |
clear() | セットからすべての要素を削除します |
isEmpty() | セットが要素を含んでいない場合、trueを返します |
これらのメソッドを動作させて見ましょう:
LinkedHashSet<String> colors = new LinkedHashSet<>();
// 要素の追加
colors.add("Red");
colors.add("Green");
colors.add("Blue");
System.out.println("Colors: " + colors); // 出力:Colors: [Red, Green, Blue]
// 重複を追加(追加されない)
colors.add("Red");
System.out.println("Colors after adding duplicate: " + colors); // 出力:Colors after adding duplicate: [Red, Green, Blue]
// 要素の存在を確認
System.out.println("Contains Yellow? " + colors.contains("Yellow")); // 出力:Contains Yellow? false
// 要素の削除
colors.remove("Green");
System.out.println("Colors after removing Green: " + colors); // 出力:Colors after removing Green: [Red, Blue]
// サイズの取得
System.out.println("Number of colors: " + colors.size()); // 出力:Number of colors: 2
// セットが空かどうかを確認
System.out.println("Is the set empty? " + colors.isEmpty()); // 出力:Is the set empty? false
// セットのクリア
colors.clear();
System.out.println("Colors after clearing: " + colors); // 出力:Colors after clearing: []
LinkedHashSetのエントリを反復するSpliterator()の取得例
次に、もっと高度な機能を見ていきましょう:Spliterator。それは、並列処理に使用できるスーパーパワードイテーターのようなものです。それが複雑に聞こえても心配しないでください - 簡単に保ちます!
以下がLinkedHashSetでSpliteratorを使用する方法の例です:
LinkedHashSet<String> fruits = new LinkedHashSet<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
fruits.add("Date");
Spliterator<String> spliterator = fruits.spliterator();
// Spliteratorを使用して要素を印刷
spliterator.forEachRemaining(fruit -> System.out.println("Fruit: " + fruit));
このコードは以下を出力します:
Fruit: Apple
Fruit: Banana
Fruit: Cherry
Fruit: Date
spliterator()
メソッドはSpliteratorを返し、私たちはそれを使用してLinkedHashSetを反復することができます。 forEachRemaining()
メソッドは、指定されたアクションを各要素に適用します。この場合、私たちは各果物を印刷しています。
それでは、これでJavaのLinkedHashSetの基本を学びました。練習が実践を完成させることを覚えておいて、これらの概念に対して実験を恐れずにしましょう。自分のLinkedHashSetを作成し、そのメソッドで遊んでみてください。知らずにそれがLinkedHashSetのマスターになるまでになるかもしれません!
コーディングを楽しんで、未来のJavaスターたち! ?
Credits: Image by storyset