ホームページ >Java >&#&チュートリアル >同じキーの複数の値を格納する HashMap を実装するにはどうすればよいですか?

同じキーの複数の値を格納する HashMap を実装するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 06:51:10627ブラウズ

How Can I Implement a HashMap to Store Multiple Values for the Same Key?

同じキーの複数の値を持つ 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。