Heim >Java >javaLernprogramm >Wie kann ich mehrere Werte pro Schlüssel in einer HashMap speichern?

Wie kann ich mehrere Werte pro Schlüssel in einer HashMap speichern?

DDD
DDDOriginal
2024-12-21 03:33:14589Durchsuche

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

HashMap zum Speichern mehrerer Werte pro Schlüssel

HashMap ist eine weit verbreitete Datenstruktur, die Schlüssel Werten zuordnet. Normalerweise ist es jedoch darauf ausgelegt, für jeden Schlüssel einen einzelnen Wert zu speichern. Diese Einschränkung entspricht möglicherweise nicht immer den realen Anforderungen, bei denen die Notwendigkeit besteht, mehrere Werte unter demselben Schlüssel zu speichern.

Ansätze zur Implementierung mehrerer Werte in einer HashMap

Wenn die Anforderung darin besteht, genau zwei Werte pro Schlüssel zu speichern, können mehrere Ansätze in Betracht gezogen werden:

  1. Map with List as Wert: Dies beinhaltet die Verwendung eines Map> Datenstruktur. Jeder Schlüssel in der Karte entspricht einer Liste von Werten, sodass mehrere Werte einem einzelnen Schlüssel zugeordnet werden können.
  2. Wrapper-Klasse: Eine Wrapper-Klasse kann erstellt werden, um die beiden Werte zu kapseln. Die Karte speichert dann Instanzen dieser Wrapper-Klasse als Werte und bietet so eine Möglichkeit, beide Werte gleichzeitig abzurufen.
  3. Tupelklasse: Es kann eine Tupelklasse verwendet werden, bei der es sich um eine integrierte oder handelt externe Bibliothek, die eine Sammlung von Elementen darstellt. Die Karte kann ein Tupel als Wert verwenden, wodurch genau zwei Werte in einem einzelnen Objekt gespeichert werden können.

Beispielimplementierungen

Verwendung von Liste als Wert:

// 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);

Wrapper verwenden Klasse:

// 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();

Verwenden der Tupelklasse:

// 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;

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Werte pro Schlüssel in einer HashMap speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn