linkedhashmap java linkedhashmap example implementation
このチュートリアルでは、LinkedHashMapの例とメソッド、Javaでの実装、LinkedHashMapとHashMapを含め、JavaでのLinkedHashMapについてすべて説明します。
JavaのLinkedHashMapは、HashTableとLinkedListの実装を組み合わせた実装です。 Mapインターフェースを実装します。 LinkedHashMapのキーと値のペアには、予測可能な反復順序があります。
LinkedHashMapは、Mapインターフェイスに加えて、HashMapクラスも拡張します。
=> すべてのJavaトレーニングシリーズを見るには、ここにアクセスしてください。
Javaのバイナリ検索ツリープログラム
学習内容:
JavaのLinkedHashMap
LinkedHashMapの主な特徴は次のとおりです。
- キーベースの値が含まれています。
- キーと値のペアの挿入順序を維持します。
- 重複は許可されません。固有の要素があります。
- 単一のnullキーを持つことができます。ただし、複数のnull値を許可します。
- JavaLinkedHashMapは同期されていません。
LinkedHashMapの宣言
JavaのLinkedHashMapクラスは、java.utilパッケージの一部です。
Javaでのこのクラスの一般的な宣言は次のとおりです。
public class LinkedHashMap extends HashMap implements Mapここで、K =>マップ内のキーのタイプ。
V =>キーにマップされた値のタイプ。
LinkedHashMapのクラス階層を以下に示します。

上の図に示すように、LinkedHashMapはHashMapクラスとAbstractMapクラスを継承し、Mapインターフェイスを実装します。
LinkedHashMapの例
以下に簡単な例を示します。
import java.util.*; class Main{ public static void main(String args()){ //declare and initialize LinkedHashMap LinkedHashMap num_map=new LinkedHashMap(); num_map.put(1,'ONE'); num_map.put(2,'TWO'); num_map.put(3,'THREE'); num_map.put(4,'FOUR'); num_map.put(5,'FIVE'); System.out.println('The contents of LinkedHashMap:'); //retrieve the key-value pairs as set using entrySet & print each entry for(Map.Entry m:num_map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } } 出力:
LinkedHashMapの内容:
1つ
2 TWO
33つ
44つ
55つの
テスト計画とテストケースの違い

コンストラクターとメソッド
LinkedHashMapクラスによって提供されるコンストラクターとメソッドについて説明しましょう。最初に、コンストラクターとそれに続くメソッドについて説明します。
コンストラクター
| コンストラクタープロトタイプ | 説明 | |
|---|---|---|
| keySet | キーセットを設定する() | マップ内のキーのセットを返します。 |
| LinkedHashMap() | LinkedHashMapのデフォルトコンストラクタ。 | |
| LinkedHashMap(int容量) | 指定された容量でLinkedHashMapオブジェクトを作成します。 | |
| LinkedHashMap(int容量、float loadFactor) | 指定された容量とloadFactorでLinkedHashMapオブジェクトを作成します。 | |
| LinkedHashMap(int容量、float loadFactor、boolean accessOrder) | 指定された容量とloadFactorを使用してLinkedHashMapオブジェクトを作成します。また、注文モード(accessOrder)が指定されています。 | |
| LinkedHashMap(マップm) | LinkedHashMapオブジェクトを作成し、引数として渡されたマップmの値で初期化します。 |
メソッド
| 方法 | メソッドプロトタイプ | 説明 |
|---|---|---|
| 取得する | V get(オブジェクトキー) | 指定されたキーの値を返します。 |
| 晴れ | ボイドクリア() | マップ内のすべてのキーと値のペアをクリアします。 |
| containsValue | ブールcontainsValue(オブジェクト値) | 指定された値にマップされた1つ以上のキーがマップに含まれているかどうかを確認します。はいの場合はtrueを返します。 |
| entrySet | セットする | マップ内のエントリのセットを返します。 |
| forEach | void forEach(BiConsumerアクション) | マップ内のすべてのエントリに対して指定されたアクションを実行します。 |
| getOrDefault | V getOrDefault(オブジェクトキー、V defaultValue) | キーにマップされた値を返します。値がマップされていない場合、デフォルトが返されます。 |
| removeEldestEntry | 保護されたブール値removeEldestEntry(Map.Entry eldest) | マップ内の最も古いエントリを削除し、削除するとtrueを返します。 |
| replaceAll | void replaceAll(BiFunction関数) | 各エントリで指定された関数を呼び出し、関数の結果を値に置き換えます。 |
| 値 | コレクション値() | マップ内の値のコレクションを返します。 |
Javaでの実装
以下のJavaプログラムは、上記のメソッドを示すことにより、LinkedHashMapの実装を示しています。
import java.util.*; public class Main { public static void main(String a()) { //declare LinkedHashMap and initialize it with values LinkedHashMap colors_map = new LinkedHashMap(); colors_map.put('one', 'Red'); colors_map.put('two', 'Green'); colors_map.put('three', 'Blue'); // Original LinkedHashMap System.out.println('Original LinkedHashMap:' + colors_map); //isEmpty () System.out.println('LinkedHashMap 'colors_map' empty?:' + colors_map.isEmpty()); //size () System.out.println('Size of the map: ' + colors_map.size()); //get () System.out.println('Value for key = 'one':' + colors_map.get('one')); //containsKey () System.out.println('colors_map contains key = 'two':'+ colors_map.containsKey('two')); //containsValue () System.out.println('colors_map contains value 'ree':' + colors_map.containsValue('ree')); //remove () System.out.println('delete element 'one': ' + colors_map.remove('one')); System.out.println('Updated colors_map:' + colors_map); } } 出力:
元のLinkedHashMap:{one =赤、2 =緑、3 =青}
LinkedHashMap‘colors_map ’empty?:false
地図のサイズ:3
キーの値=「1」:赤
colors_mapにはkey = ‘two’:trueが含まれています
colors_mapには値「ree」が含まれています:false
要素「one」を削除:赤
更新されたcolors_map:{two = Green、three = Blue}

このプログラムでは、カラーマップを宣言して初期化します。次に、上記のさまざまな方法を使用して結果を取得します。
LinkedHashMapとHashMap
| LinkedHashMap | HashMap | ||
|---|---|---|---|
| 基本操作の時間計算量 | O(1) | O(1) | O(1) |
| 順序付きマップを実装します。 | 順序付けられていないマップを実装します。 | ||
| バケットの二重リンクリストを使用します。 | ハッシュテーブルを使用します。 | ||
| 要素を反復するときに順序を維持します。 | 反復時に順序を維持しません。 | ||
| より多くのメモリが必要です。 | LinkedHashMapよりも必要なメモリが少なくて済みます。 | ||
| 追加、削除、検索などの基本的な操作は遅くなります。 | 検索の追加、削除などの基本的な操作が高速になります。 |
HashMap対TreeMap対LinkedHashMap
次に、3つのマップ実装を比較してみましょう。 HashMap、TreeMap、およびLinkedHashMap。
次の表に、比較/相違を示します。
| 比較パラメータ | HashMap | LinkedHashMap | TreeMap |
|---|---|---|---|
| インターフェース | 地図 | 地図 | Map、SortedMap、NavigableMap |
| データ構造 | バケットのリスト | バケットの二重リンクリスト | 赤黒木 |
| 反復順序 | 順序は維持されません。 | 挿入順序に従ってソート | 要素の自然な順序に従って並べ替え |
| ヌルキー | 許可されています | 許可されています | 禁じられている |
| 同期 | 同期されていません | 同期されていません | 同期されていません |
| キーの要件 | equals()メソッドとhashCode()メソッドを上書きする必要があります | equals()メソッドとhashCode()メソッドを上書きする必要があります | 自然な順序が維持されているか、コンパレータを提供する必要があります |
よくある質問
Q#1)JavaのLinkedHashMapとは何ですか?
回答: JavaのLinkedHashMapは、HashTableとLinkedListの組み合わせとして実装されます。マップインターフェイスを実装します。予測可能な反復順序があります。内部的には、エントリに二重リンクリストを使用します。
最高の無料システムクリーナーウィンドウズ10
Q#2)LinkedHashMapはJavaでどのように機能しますか?
回答: これはHashMapに似ていますが、LinkedHashMapが維持する挿入順序がHashMapとは異なります。 LinkedHashMapの要素は、データ構造に入力されたのと同じ方法で保存されます。
Q#3)LinkedHashMapをループするにはどうすればよいですか?
回答: イテレータを使用してLinkedHashMapをループできます。
以下は、イテレーターを使用してLinkedHashMapを反復処理するために実行できる手順です。
- 新しいLinkedHashMapオブジェクトを作成します。
- Put APIメソッドを使用して、キーと値のペアをマップに挿入します。
- entrySet()APIメソッドを呼び出して、マップ内のキーと値のペアのセットを取得します。
- このセットでイテレータを呼び出して、getKey()およびgetValue()APIメソッドを使用して各キーと値のペアを取得します。
Q#4)JavaでのLinkedHashMapの使用は何ですか?
回答: JavaでのLinkedHashMapの主な用途は、挿入順序を維持するために使用することです。また、キーへのアクセスに使用するアクセス順序を保持するためにも使用できます。 HashMapよりも高速であるため、パフォーマンスが重要なHashMapの代わりにLinkedHashMapを使用できます。
Q#5)HashMapはLinkedHashMapよりも高速ですか?
回答: どちらもパフォーマンスは似ています。 HashMapはアクセス順序を維持しないため、LinkedHashMapと比較すると、必要なメモリが少なくて済みます。したがって、比較的HashMapの方が高速です。
結論
このチュートリアルでは、JavaでのLinkedHashMapについて説明しました。クラス宣言、クラス階層、コンストラクター、およびメソッドに関する詳細を見てきました。
LinkedHashMapとHashMapの主な違いについても学びました。 LinkedHashMap、HashMap、TreeMapの3方向の違いについても説明しました。
今後のチュートリアルでは、Javaコレクションフレームワークに関するその他のトピックについて説明します。
=> ここで簡単なJavaトレーニングシリーズに注意してください。