Java LinkedHashMap
Java LinkedHashMap
このチュートリアルでは、例を使用して Java LinkedHashMap クラスとその操作について学習します。
LinkedHashMap
Java コレクション フレームワークのクラスは、Map インターフェイスのハッシュ テーブルとリンク リストの実装を提供します。
LinkedHashMap
インターフェイスは HashMap クラスを拡張して、そのエントリをハッシュ テーブルに格納します。エントリを順序付けるために、すべてのエントリ間で二重にリンクされたリストを内部的に維持します。
LinkedHashMap の作成
リンクされたハッシュマップを作成するには、 java.util.LinkedHashMap
をインポートする必要があります 最初にパッケージ。パッケージをインポートしたら、リンクされたハッシュマップを Java で作成する方法を次に示します。
// LinkedHashMap with initial capacity 8 and load factor 0.6
LinkedHashMap<Key, Value> numbers = new LinkedHashMap<>(8, 0.6f);
上記のコードでは、numbers という名前のリンクされたハッシュマップを作成しました。 .
ここで、
- キー - マップ内の各要素 (値) を関連付けるために使用される一意の識別子
- 値 - マップ内のキーによって関連付けられた要素
new LinkedHashMap<>(8, 0.6)
の部分に注意してください .ここで、最初のパラメータは容量です 2 番目のパラメータは loadFactor です .
- 容量 - このリンクされたハッシュマップの容量は 8 です。つまり、8 つのエントリを格納できます。
- 負荷係数 - このリンクされたハッシュマップの負荷係数は 0.6 です。つまり、ハッシュ マップが 60% 埋まるたびに、エントリは元のハッシュ テーブルの 2 倍のサイズの新しいハッシュ テーブルに移動されます。
デフォルトの容量と負荷率
容量と負荷係数を定義せずに、リンクされたハッシュマップを作成することができます。たとえば、
//LinkedHashMap with default capacity and load factor
LinkedHashMap<Key, Value> numbers1 = new LinkedHashMap<>();
デフォルトでは、
- リンクされたハッシュマップの容量は 16 になります
- 負荷係数は 0.75 になります
注意 :LinkedHashMap
クラスでは、そのエントリの順序を定義することもできます。例えば
// LinkedHashMap with specified order
LinkedHashMap<Key, Value> numbers2 = new LinkedHashMap<>(capacity, loadFactor, accessOrder);
ここで、accessOrder ブール値です。デフォルト値は false
です .この場合、リンクされたハッシュマップのエントリは、挿入順序に基づいて並べられます。
ただし、 true
の場合 accessOrder として渡されます 、リンクされたハッシュマップのエントリは、最近アクセスされたものから最近アクセスされたものの順に並べられます。
他のマップから LinkedHashMap を作成する
他のマップのすべての要素を含むリンクされたハッシュマップを作成する方法は次のとおりです。
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
// Creating a LinkedHashMap of even numbers
LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
System.out.println("LinkedHashMap1: " + evenNumbers);
// Creating a LinkedHashMap from other LinkedHashMap
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(evenNumbers);
numbers.put("Three", 3);
System.out.println("LinkedHashMap2: " + numbers);
}
}
出力
LinkedHashMap1: {Two=2, Four=4} LinkedHashMap2: {Two=2, Four=4, Three=3}
LinkedHashMap のメソッド
LinkedHashMap
クラスは、マップ上でさまざまな操作を実行できるようにするメソッドを提供します。
要素を LinkedHashMap に挿入
put()
- 指定されたキー/値のマッピングをマップに挿入しますputAll()
- 指定されたマップのすべてのエントリをこのマップに挿入しますputIfAbsent()
- 指定されたキーがマップに存在しない場合、指定されたキー/値のマッピングをマップに挿入します
たとえば、
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
// Creating LinkedHashMap of even numbers
LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();
// Using put()
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
System.out.println("Original LinkedHashMap: " + evenNumbers);
// Using putIfAbsent()
evenNumbers.putIfAbsent("Six", 6);
System.out.println("Updated LinkedHashMap(): " + evenNumbers);
//Creating LinkedHashMap of numbers
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("One", 1);
// Using putAll()
numbers.putAll(evenNumbers);
System.out.println("New LinkedHashMap: " + numbers);
}
}
出力
Original LinkedHashMap: {Two=2, Four=4} Updated LinkedHashMap: {Two=2, Four=4, Six=6} New LinkedHashMap: {One=1, Two=2, Four=4, Six=6}
LinkedHashMap 要素へのアクセス
<強い>1. entrySet()、keySet()、values() の使用
entrySet()
- マップのすべてのキー/値マッピングのセットを返しますkeySet()
- マップのすべてのキーのセットを返しますvalues()
- マップのすべての値のセットを返します
たとえば、
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("LinkedHashMap: " + numbers);
// Using entrySet()
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet()
System.out.println("Keys: " + numbers.keySet());
// Using values()
System.out.println("Values: " + numbers.values());
}
}
出力
LinkedHashMap: {One=1, Two=2, Three=3} Key/Value mappings: [One=1, Two=2, Three=3] Keys: [One, Two, Three] Values: [1, 2, 3]
<強い>2. get() と getOrDefault() の使用
get()
- 指定されたキーに関連付けられた値を返します。キーが見つからない場合は、null
を返します。 .getOrDefault()
- 指定されたキーに関連付けられた値を返します。キーが見つからない場合は、指定されたデフォルト値を返します。
たとえば、
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("LinkedHashMap: " + numbers);
// Using get()
int value1 = numbers.get("Three");
System.out.println("Returned Number: " + value1);
// Using getOrDefault()
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Returned Number: " + value2);
}
}
出力
LinkedHashMap: {One=1, Two=2, Three=3} Returned Number: 3 Returned Number: 5
LinkedHashMap 要素を削除
remove(key)
- 指定された key に関連付けられたエントリを返し、削除します 地図からremove(key, value)
- 指定された key の場合にのみ、マップからエントリを削除します 指定された value にマップされます ブール値を返します
たとえば、
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("LinkedHashMap: " + numbers);
// remove method with single parameter
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// remove method with two parameters
boolean result = numbers.remove("Three", 3);
System.out.println("Is the entry Three removed? " + result);
System.out.println("Updated LinkedHashMap: " + numbers);
}
}
出力
LinkedHashMap: {One=1, Two=2, Three=3} Removed value: 2 Is the entry {Three=3} removed? True Updated LinkedHashMap: {One=1}
LinkedHashMap のその他の方法
メソッド | 説明 |
---|---|
clear() | マップからすべてのエントリを削除します |
containsKey() | 指定されたキーがマップに含まれているかどうかを確認し、ブール値を返します |
containsValue() | マップに指定された値が含まれているかどうかを確認し、ブール値を返します |
size() | マップのサイズを返します |
isEmpty() | マップが空かどうかを確認し、ブール値を返します |
LinkedHashMap 対。ハッシュマップ
LinkedHashMap
の両方 そして HashMap
Map
を実装します インターフェース。ただし、両者にはいくつかの違いがあります。
LinkedHashMap
二重リンク リストを内部的に維持します。これにより、要素の挿入順序が維持されます。LinkedHashMap
クラスはHashMap
より多くのストレージを必要とします .これはLinkedHashMap
のためです リンクされたリストを内部で維持します。LinkedHashMap
のパフォーマンスHashMap
より遅い .
Java