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

スポンサーリンク
スポンサーリンク

HashMapとHashSetの大きな違いは、HashMapがMapインタフェース階層に属し、Collectionインタフェースとの関連性がないのに対し、HashSetはCollectionインタフェース階層に属している点です。

Javaなどのプログラミング言語では、データを動的に格納するために「コレクション」と呼ばれる機能が用意されています。

コレクションを用いると、複数のオブジェクトを1つの単位として格納することが可能である

さらに、コレクションに対して、追加、削除、除去、ソート、検索などの操作を行うことも可能である

Javaでコレクションを実装するための基本インターフェースはCollectionと呼ばれる。

また、SetはCollectionインタフェースを拡張したインタフェースです。

HashSetはこの階層に含まれる。

一方、MapはCollectionを拡張しない独立したインターフェースです。

HashMap は Map 階層に属します。

スポンサーリンク

HashMapとは

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

AbstractMapがMapインターフェイスを実装しているのに対し、HashMapはAbstractMapを継承しています。

また,Key-Value のペアを持ち,キーは一意でなければならない.また,1つの NULL キーと複数の NULL 値を持つことができます.さらに,HashMapは同期化されておらず,特定の順序を維持することもない。

プログラム例を以下に示す。

Main Difference - HashMap vs HashSet 図1: HashMapを用いたプログラム

students’はHashMapのオブジェクトです。

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

HashMapに新しい項目を追加するには、putメソッドを使用します。

Map.Entryを使ったforループにより、studentsにあるすべての項目を調べることができます。

getKey() メソッドはキーを、getValues() メソッドは値を表示します。

さらに、HashMap は特定の順序を維持しません。

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

また、キーが 2 の項目は 2 つありますが、1 つの項目しか表示されません。

したがって、ユニークなキーしか含まれない。

HashSetとは

HashSetは、ハッシュテーブルを使用してコレクションを作成するためのクラスです。

HashSet は AbstractSet を継承し、AbstractSet は Set を実装し、Set は Collection を継承しています。

HashSetはNull値を含むことができ、同期化されていない。

さらに,HashSetは挿入順序を保持せず,ユニークな要素のみを含む。

以下はその例です。

fruitsはHashSetのオブジェクトであり,Stringを格納することができる。

addメソッドはHashSetに新しい要素を挿入するのに役立つ。

iteratorメソッドは、HashSetに含まれるアイテムの数を変数iに格納し、whileループで各アイテムを走査して表示する。

まず、追加されたアイテムはOrangeですが、出力される最初のアイテムはAppleです。

その結果、HashSetは挿入順序を維持しない。

さらに、Appleというアイテムは2つありますが、そのうちの1つしか出力されません。

したがって、ユニークなアイテムしか含まれない。

HashMap と HashSet の違い

定義

HashMap は AbstractMap クラスを継承し、Map インターフェイスを実装した、コレクションを作成するためのクラスです。

HashSetは、AbstractSetクラスを継承し、Setインタフェースを実装した、要素の集合を1つの単位として生成するためのクラスです。

これがHashMapとHashSetの根本的な違いです。

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

さらに、HashMap は Map Hierarchy に属します。

Collectionインタフェースには属さない。

一方、HashSetはCollection Hierarchyに属します。

これがHashMapとHashSetの大きな違いのひとつです。

キー、バリュー

HashMapとHashSetのもう一つの違いは、HashMapがキーと値を含むのに対して、HashSetは値を含むことである

機能性

HashMapとHashSetのもう一つの違いは、HashMapがHashtableを使ってキーに基づいた値を格納するのに対し、HashSetはハッシュ機構を使って要素を格納することである

結論

HashMap と HashSet の主な違いは、HashMap が Map Interface Hierarchy に属し、Collection Interface との関連性がないのに対し、HashSet は Collection Interface Hierarchy に属していることである

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