同じキーの複数の値を持つ HashMap の実装
HashMap は、キーを値にマップするデータ構造です。デフォルトでは、各キーに関連付けられる値は 1 つだけです。ただし、1 つのキーに複数の値を設定できる HashMap を実装することは可能です。
複数の値を実装するためのオプション:
1.値としてリストを使用するマップ:
Map
値がリストであるマップを使用します。これにより、複数の値を 1 つのキーに保存できます。欠点は、リストに含まれる値が 2 つより多くても少なくてもよいことです。
2. Custom Wrapper Class:
Map
複数の値を含むラッパー クラスを作成します。これにより、値が単一のエンティティにバインドされたままになり、カプセル化が行われます。ただし、ラッパー クラスを作成および管理するには追加のコードを記述する必要があります。
3.タプル クラス:
Map
タプル クラス (プログラミング言語で利用可能な場合) を使用して、複数の値を保存します。これにより、それらを表すためのシンプルでタイプセーフな方法が提供されます。
4.複数のマップ:
Map
Map
複数のマップを使用して、異なる値を保存します。便利ではありますが、マップが同期しなくなった場合、値の切断やメンテナンスの問題が発生する可能性があります。
例:
リストとしてマップを使用する値:
Map<String, List<Person>> peopleByForename = new HashMap<>(); List<Person> bobs = new ArrayList<>(); bobs.add(new Person("Bob Smith")); bobs.add(new Person("Bob Jones")); peopleByForename.put("Bob", bobs);
カスタム ラッパーの使用クラス:
class Wrapper { public Person person1; public Person person2; public Wrapper(Person person1, Person person2) { this.person1 = person1; this.person2 = person2; } } Map<String, Wrapper> peopleByForename = new HashMap<>(); peopleByForename.put("Bob", new Wrapper(new Person("Bob Smith"), new Person("Bob Jones")));
タプルの使用 クラス:
// Assumes a Tuple2 class is available Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>(); peopleByForename.put("Bob", Tuple2.create(new Person("Bob Smith"), new Person("Bob Jones")));
複数のマップの使用:
Map<String, Person> firstPersonByForename = new HashMap<>(); Map<String, Person> secondPersonByForename = new HashMap<>(); firstPersonByForename.put("Bob", new Person("Bob Smith")); secondPersonByForename.put("Bob", new Person("Bob Jones"));
お客様にとって最適なオプションを選択する前に、各アプローチの長所と短所を考慮してください。特定の使用例。
以上が同じキーの複数の値を格納する HashMap を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。