HashMapとLinkedHashMapの違いとは?分かりやすく解説!

この記事には、アフィリエイト広告を利用しています。

スポンサーリンク


HashMapとLinkedHashMapの主な違いは、HashMapはデータの挿入順序を維持しないのに対し、LinkedHashMapはデータの挿入順序を維持することである

Mapはよく使われるデータ構造です。

Java Standard EditionのMapの実装は、HashMapとLikedHashMapの2つです。

HashMapは、ハッシュテーブルとして実装されている。

これは、キーや値に順序を持たない。

一方、LinkedHashMapはデータ挿入の順序を保持する。

スポンサーリンク

HashMapとは

HashMapは、ハッシュテーブルを使ったMapインタフェースを実装したクラスです。

AbstractMapを継承し、AbstractMapはMapインターフェイスを実装しています。

HashMapはKey-Valueのペアを含む。

一意のキーで構成することができる。

HashMapは同期化されておらず,データの挿入順序も保持されていない.HashMapを使ったプログラム例を以下に示す。

上のプログラムでは,’employees’はHashMapのオブジェクトです。

整数型のキーと文字列型の値で複数の項目を格納することができる。

putメソッドにより、HashMapに項目を挿入することができる。

Map.Entryを使ったforループで、’employees’のすべての項目を繰り返し処理する。

getKeyメソッドでキーを表示し、getValuesメソッドでそのキーに対応する値を表示しています。

HashMapは挿入された順序に従って要素を表示することはありません。

また、同じ内容のレコードが2つあるにもかかわらず、片方しか表示されない。

これはHashMapがユニークなキーしか持たないからです。

LinkedHashMapとは

LinkedHashMap クラスは Map インターフェースの Hashtable と Linked List の実装です。


繰り返しの順序が予測可能です

HashMap クラスを継承し、Map インターフェイスを実装しています。

LinkedHashMapもKey-Valueペアを持ち、ユニークな要素のみを含む。

以下はその例です。

Main Difference - HashMap vs LinkedHashMap 図2: LinkedHashMapを使ったプログラム

上のプログラムでは、’employees’はLinkedHashMapのオブジェクトです。

整数型のキーと文字列型の値で複数の項目を格納することができる。

putメソッドにより、LinkedHashMapに項目を挿入することができます。

Map.Entryを使ったforループは、’employees’内のすべての項目を繰り返し処理するのに役立つ。

getKeyメソッドはキーを表示し、getValuesメソッドはそのキーに対応する値を表示します。

LinkedHashMapは、挿入された順序に従って要素を表示します。

さらに、同じ内容を持つレコードが2つあるが、片方しか表示しない。

これはLinkedHashMapがユニークなキーしか持たないからです。

HashMapとLinkedHashMapの違い

定義

HashMap は AbstractMap クラスを継承して Map インターフェースを実装し たコレクションを作成するためのクラスであり、LinkedHashMap は Map インターフェースの Hashtable と Linked List を実装し、反復順序を予測できるようにしたクラスです。

このように、HashMapとLinkedHashMapの大きな違いはここにあります。

挿入順序

さらに、HashMapとLinkedHashMapのもう一つの違いは、HashMapはデータの挿入順を維持しないのに対し、LinkedHashMapはデータの挿入順を維持することです。

コレクションインターフェースとの関連

また,HashMapはAbstractMapを継承し,AbstractMapはMapインタフェースを実装している.一方、LinkedHashMapはHashMapを継承し、HashMapはAbstratHashMapを継承し、AbstractHashMapはMapインタフェースを実装している。

結論

HashMap と LinkedHashMap は Map インターフェースの 2 つの実装です。

HashMapとLinkedHashMapの主な違いは、HashMapはデータの挿入順序を保持しないのに対し、LinkedHashMapはデータの挿入順序を保持することである

タイトルとURLをコピーしました