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ペアを持ち、ユニークな要素のみを含む。
以下はその例です。
図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はデータの挿入順序を保持することである。