どちらかを選択することの主な利点と、その選択に伴う不利益を誰かが説明できますか?
5 に答える
それらはさまざまな問題を解決します。LinkedHashMap はキーから値へのマッピングを行い、LinkedHashSet は単純に重複のないもののコレクションを格納します。
リンクされたハッシュ マップは、キーと値のペアをマッピングするためのものです。たとえば、名前と年齢を保存します。
Map<String,Integer> namesAndAges = new LinkedHashMap<String,Integer>();
namesAndAges.put("Benson", 25);
namesAndAges.put("Fred", 19);
一方、リンクされたハッシュ セットは、1 つのもののコレクション (名前) を格納するためのものです。たとえば、次のようになります。
Set<String> names = new LinkedHashSet<String>();
names.add("Benson");
names.add("Fred");
LinkedHashSet には、要素の順序を定義するすべてのエントリを実行する二重リンク リストが内部的に含まれています。このクラスは null 要素を許可します。
このクラスの実装は同期されていないため、外部で同期する必要があります。 LinkedHashMap も同期されず、外部で同期する必要があります
例えば:
Map map = Collections.synchronizedMap(new LinkedHashMap());
それ以外は、LinkedHashSet は要素ごとに単一の値を格納し、LinkedHashMap はキーと値のペアを格納します。
以下の図では、java.util.Collections を確認できます。実線のボックスは具体的なクラスの実装を示して
います代替テキスト http://www.softfinity.com/diag1.png
セットには値だけがあり、重複を入れることはできません。マップにはキーと値のペアがあります。それらにはさまざまな用途があります。
セットはオブジェクトのグループを渡すコレクションとして使用されますが、マップは、各要素を識別する一意のキーがあり、そのキーでアクセスできるようにする場合に役立ちます。
1 つはセットで、1 つはマップです。特定のシナリオに適したデータ構造を選択します。
LinkedHashMap
LinkedHashSet
違いは1つだけで、それは両親の違いによってもたらされますHashMap
。HashSet
繰り返しますが、HashSet
は の単なるバリエーションですHashMap
。すべての値が単一の最終オブジェクトを指してHashSet
いると言えます。HashMap
したがって、どちらも大きな違いはありません。
を使用LinkedHashSet
すると、キー以外の最終オブジェクトを 1 つだけ使用することになります。を使用してLinkedHashMap
、すべてのキーの値を null として設定すると、Set の目的でも LinkedHashSet よりも優れています。