ハッシュマップを使用してデータを保存しました。問題は、ハッシュマップが複数の同じキーを持つことができないことに気づいたことです。データが次のように見えるデータを保存するために他に何を使用する必要がありますか?
- 名前1100.0
- 名前299.8
- Name3 121.5
- ..。
私がやろうとしている他のことは、私がそのキーを呼び出すときに、ある特定の人のデータを表示することです。では、1つのキーに関連する複数の値を格納する方法はありますか?または、他のタイプのストレージを使用する必要がありますか?
ハッシュマップを使用してデータを保存しました。問題は、ハッシュマップが複数の同じキーを持つことができないことに気づいたことです。データが次のように見えるデータを保存するために他に何を使用する必要がありますか?
私がやろうとしている他のことは、私がそのキーを呼び出すときに、ある特定の人のデータを表示することです。では、1つのキーに関連する複数の値を格納する方法はありますか?または、他のタイプのストレージを使用する必要がありますか?
リンクリストや各キーインデックスのツリーなど、別のデータ構造内に値を格納する場合、ハッシュマップに重複するキーが含まれる可能性があります。次に、衝突の処理方法を決定する必要があります。
編集:
HashMap
["firstKey"] => LinkedList of (3,4,5)
["secondKey"] => null
["thirdKey"] => LinkedList of (3)
Matthew Coxesの回答を拡張するには、ハッシュテーブルクラスを拡張して、リストを自動的に管理し、複数のキーを持っているように見せることができます。
独自のデータモデルを使用して、それをリストに保存するか、高速アクセスが必要な場合はマップします。
public class Player {
private String name;
private List<Float> scores;
}
利点:
Google guava ライブラリには、キーごとに複数の要素を許可するコレクション タイプが含まれています。一番Multimap最初に思いつくのはこれです。
一般に Guava には非常に便利なユーティリティがたくさん含まれているので、チェックする価値があると思います。
外部ライブラリを使用できない場合は、単純に (Matthew Cox が言ったように) マップと List をMap<K, List<V>>. ただし、すべてのキーのリストを初期化する必要があるため、これを使用するのは少し不便です。