Java LinkedHashMap クラス:初心者向けの友好ガイド

はじめに

こんにちは、未来のJavaの魔法使いたち!今日、私たちはLinkedHashMapのワクワクする世界に旅立つことにしました。まだ一度もコードを書いたことがなくても心配しないでください。あなたの友好的なガイドとして、私が一緒にこのトピックをステップバイステップに探求します。このチュートリアルの最後には、あなたがどれだけ学んでいるかに驚きます!

Java - LinkedHashMap

LinkedHashMapは、アイテム(プログラミングではキーバリューペアと呼ばれます)を特定の順序で保存できる魔法の箱のようなものです。お気に入りの本を棚に並べることを想像してみてください。どんな本を探しても素早く見つけることができるだけでなく、それを追加した順序や読んだ頻度に応じて並べ替えることもできます。それはまさにLinkedHashMapがデータに対して行うことです!

クラスの宣言

JavaでLinkedHashMapを宣言する方法を始めましょう:

import java.util.LinkedHashMap;

public class MyLinkedHashMapExample {
public static void main(String[] args) {
LinkedHashMap<String, Integer> myBookshelf = new LinkedHashMap<>();
}
}

この例では、myBookshelfという名前のLinkedHashMapを作成しています。<String, Integer>の部分は、JavaにStringキー(本のタイトル)とInteger値(ページ数かもしれません)を使用することを示しています。今は混乱しても大丈夫です。進むにつれて解説します!

パラメータ

LinkedHashMapを使用する際に考慮すべきいくつかのパラメータがあります:

  1. initialCapacity:これは、初期にどれだけ大きな本棚を作るかを決めるようなものです。
  2. loadFactor:これは、より大きな本棚が必要になるまでどれだけ満タンになるかを考えるようなものです。
  3. accessOrder:これは、本を追加した順序に並べるか、アクセスした頻度に基づいて並べるかを決定します。

例を見てみましょう:

LinkedHashMap<String, Integer> myBookshelf = new LinkedHashMap<>(16, 0.75f, true);

ここでは、私たちの本棚は16冊の本を保持でき、75%満タンになったときにより大きな本棚を考え、本をアクセスした頻度に基づいて並べ替えたいということを示しています。

クラスのコンストラクタ

LinkedHashMapは、魔法の本棚を作成するためのいくつかの方法を提供しています。以下は主要なコンストラクタです:

  1. LinkedHashMap():デフォルトの設定で空のLinkedHashMapを作成します。
  2. LinkedHashMap(int initialCapacity):初期キャパシティを指定します。
  3. LinkedHashMap(int initialCapacity, float loadFactor):初期キャパシティとロードファクタを指定します。
  4. LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder):3つのパラメータをすべて指定します。
  5. LinkedHashMap(Map<? extends K, ? extends V> m):指定されたマップと同じマッピングを持つLinkedHashMapを作成します。

異なるコンストラクタを使用してLinkedHashMapを作成してみましょう:

LinkedHashMap<String, Integer> shelf1 = new LinkedHashMap<>();
LinkedHashMap<String, Integer> shelf2 = new LinkedHashMap<>(20);
LinkedHashMap<String, Integer> shelf3 = new LinkedHashMap<>(20, 0.8f);
LinkedHashMap<String, Integer> shelf4 = new LinkedHashMap<>(20, 0.8f, true);

Map<String, Integer> existingMap = new HashMap<>();
existingMap.put("Java Basics", 200);
LinkedHashMap<String, Integer> shelf5 = new LinkedHashMap<>(existingMap);

これらは、私たちのニーズに基づいて異なる"本棚"を作成しています。Javaがどれだけ柔軟かに驚きましたよね?

クラスのメソッド

次に、LinkedHashMapで最も一般的に使用されるメソッドをいくつか見てみましょう。簡単に参照するためにテーブル形式で示します:

メソッド 説明
put(K key, V value) LinkedHashMapに新しいキーバリューペアを追加します
get(Object key) 指定されたキーに関連付けられた値を取得します
remove(Object key) 指定されたキーのマッピングを削除します
clear() LinkedHashMapからすべてのマッピングを削除します
size() LinkedHashMap内のキーバリューペアの数を返します
isEmpty() LinkedHashMapが空の場合はtrueを返します
containsKey(Object key) LinkedHashMapに指定されたキーが存在する場合はtrueを返します
containsValue(Object value) LinkedHashMapに指定された値が存在する場合はtrueを返します
keySet() LinkedHashMap内のすべてのキーのセットを返します
values() LinkedHashMap内のすべての値のコレクションを返します
entrySet() LinkedHashMap内のすべてのキーバリューペアのセットを返します

いくつかのメソッドを動作を確認してみましょう:

LinkedHashMap<String, Integer> myBookshelf = new LinkedHashMap<>();

// 本を本棚に追加
myBookshelf.put("Java Basics", 200);
myBookshelf.put("Data Structures", 350);
myBookshelf.put("Algorithms", 400);

// "Java Basics"のページ数を取得
int javaPages = myBookshelf.get("Java Basics");
System.out.println("Java Basics has " + javaPages + " pages.");

// Pythonの本をお持ちであるかどうかを確認
boolean hasPython = myBookshelf.containsKey("Python for Beginners");
System.out.println("Do we have a Python book? " + hasPython);

// "Algorithms"の本を削除
myBookshelf.remove("Algorithms");

// すべての本のタイトルを印刷
for (String title : myBookshelf.keySet()) {
System.out.println("Book title: " + title);
}

このコードスニペットは、本棚に本を追加し、それらに関する情報を取得し、特定の本をお持ちであるかどうかを確認し、本を削除し、お持っているすべての本をリストする方法を示しています。すごく便利ですよね?

継承されたメソッド

LinkedHashMapは、親クラスからメソッドを継承しています。以下は重要なものです:

継承元 メソッド
HashMap clone(), compute(), computeIfAbsent(), computeIfPresent(), merge()
AbstractMap equals(), hashCode(), toString()
Object finalize(), getClass(), notify(), notifyAll(), wait()

これらの継承されたメソッドは、特定の状況で非常に便利な追加機能を提供します。

LinkedHashMapから値を取得する例

最後に、LinkedHashMapを作成し、いくつかの値を追加して取得する完全な例を見てみましょう:

import java.util.LinkedHashMap;

public class BookshelfExample {
public static void main(String[] args) {
LinkedHashMap<String, Integer> myBookshelf = new LinkedHashMap<>();

// 本棚に本を追加
myBookshelf.put("Java Basics", 200);
myBookshelf.put("Data Structures", 350);
myBookshelf.put("Algorithms", 400);

// 各本の情報を取得し印刷
for (String title : myBookshelf.keySet()) {
int pages = myBookshelf.get(title);
System.out.println("The book '" + title + "' has " + pages + " pages.");
}

// 特定の本を取得
String bookToFind = "Data Structures";
if (myBookshelf.containsKey(bookToFind)) {
int pages = myBookshelf.get(bookToFind);
System.out.println("\nFound it! '" + bookToFind + "' has " + pages + " pages.");
} else {
System.out.println("\nSorry, we don't have '" + bookToFind + "' on our shelf.");
}
}
}

出力

このコードを実行すると、以下のような出力が表示されます:

The book 'Java Basics' has 200 pages.
The book 'Data Structures' has 350 pages.
The book 'Algorithms' has 400 pages.

Found it! 'Data Structures' has 350 pages.

そして、これでLinkedHashMapを使用してデジタル本棚を作成したことになります。本を追加し、ページ数を知り、特定の本が本棚にあるかどうかを確認することができます。プログラミングは驚くべきでしょう?

実際の本棚を整理するように、LinkedHashMapを使用することで、より习惯的になります。異なることを試してみることを恐れないでください。幸せなコーディングを、未来のJavaのエキスパートたち!

Credits: Image by storyset