ホームページ >Java >&#&チュートリアル >HashMap のキーごとに複数の値を保存するにはどうすればよいですか?

HashMap のキーごとに複数の値を保存するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-21 03:33:14623ブラウズ

How Can I Store Multiple Values per Key in a HashMap?

キーごとに複数の値を保存する HashMap

HashMap は、キーを値にマップする広く使用されているデータ構造です。ただし、通常はキーごとに 1 つの値を保存するように設計されています。この制限は、同じキーの下に複数の値を格納する必要がある場合、現実の要件と必ずしも一致しない可能性があります。

HashMap に複数の値を実装するアプローチ

要件がキーごとに 2 つの値を正確に保存することである場合、いくつかのアプローチが可能です。検討:

  1. リストを値として使用するマップ: これには、Map> の使用が含まれます。データ構造。マップ内の各キーは値のリストに対応し、複数の値を 1 つのキーに関連付けることができます。
  2. ラッパー クラス: ラッパー クラスを作成して 2 つの値をカプセル化できます。次に、マップはこのラッパー クラスのインスタンスを値として保存し、両方の値を同時に取得する方法を提供します。
  3. タプル クラス: タプル クラスを使用できます。これは、組み込みまたは要素のコレクションを表す外部ライブラリ。マップは値としてタプルを使用できるため、単一のオブジェクトに 2 つの値を正確に格納できます。

実装例

リストの使用として値:

// Initialize the HashMap
Map<String, List<Person>> peopleByForename = new HashMap<>();

// Populate the HashMap
List<Person> people = new ArrayList<>();
people.add(new Person("Bob Smith"));
people.add(new Person("Bob Jones"));

peopleByForename.put("Bob", people);

// Retrieve values
List<Person> bobs = peopleByForename.get("Bob");
Person bob1 = bobs.get(0);
Person bob2 = bobs.get(1);

ラッパー クラスの使用:

// Define the wrapper class
class Wrapper {
    private Person person1;
    private Person person2;

    public Wrapper(Person person1, Person person2) {
        this.person1 = person1;
        this.person2 = person2;
    }

    public Person getPerson1() { return person1; }
    public Person getPerson2() { return person2; }
}

// Initialize the HashMap
Map<String, Wrapper> peopleByForename = new HashMap<>();

// Populate the HashMap
peopleByForename.put("Bob", new Wrapper(new Person("Bob Smith"), new Person("Bob Jones")));

// Retrieve values
Wrapper bobs = peopleByForename.get("Bob");
Person bob1 = bobs.getPerson1();
Person bob2 = bobs.getPerson2();

タプル クラスの使用:

// Initialize the HashMap
Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();

// Populate the HashMap
peopleByForename.put("Bob", new Tuple2<>(new Person("Bob Smith"), new Person("Bob Jones")));

// Retrieve values
Tuple2<Person, Person> bobs = peopleByForename.get("Bob");
Person bob1 = bobs.Item1;
Person bob2 = bobs.Item2;

以上がHashMap のキーごとに複数の値を保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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