キーごとに複数の値を持つマップの実装
特定のシナリオでは、同じキーの下に複数の値を格納する必要がある場合があります。ハッシュマップ。 Java の標準 HashMap はこの動作をネイティブにサポートしていませんが、これを実現するにはいくつかのアプローチがあります。
1.値としてリストを使用したマップ:
このアプローチには、値が目的の値のリストである HashMap の作成が含まれます。例:
Map<String, List<Person>> peopleByForename = new HashMap<>();
このメソッドは、キーの下に格納される値の数に関して柔軟性を提供しますが、正確に 2 つの値を持つという保証はありません。
2.ラッパー クラスの使用:
別の方法は、必要な値を含むラッパー クラスを定義し、それを HashMap の値として使用することです。
class Wrapper { private Person person1; private Person person2; public Wrapper(Person person1, Person person2) { this.person1 = person1; this.person2 = person2; } public Person getPerson1() { return this.person1; } public Person getPerson2() { return this.person2; } } Map<String, Wrapper> peopleByForename = new HashMap<>();
このメソッドは、正確に 2 つの値が存在しますが、ラッパー クラス用の追加の定型コードを作成する必要があります。
3.タプルの使用:
タプル クラスは、複数の値を 1 つのオブジェクトにカプセル化します。 HashMap の値としてタプルを使用すると、キーごとに複数の値を効果的に取得できます。例:
import java.util.Tuple; Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();
4.複数のマップを並べて表示:
最後に、異なるキー タイプに複数の HashMap を使用することもできます。たとえば、次のように作成できます。
Map<String, Person> firstPersonByForename = new HashMap<>(); Map<String, Person> secondPersonByForename = new HashMap<>();
この方法では値を明確に分離できますが、2 つのマップが一貫して更新されていない場合、不一致が発生する可能性があります。
選択アプローチの方法は、アプリケーションの特定の要件によって異なります。キーごとに 2 つの値を厳密に適用することが重要な場合は、ラッパー クラスまたはタプルを使用する方が適切な場合があります。あるいは、値の数に柔軟性が必要な場合は、値としてリストを含むマップを使用する方が適切な場合があります。
以上がJavaでキーごとに複数の値を持つHashMapを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。