Heim >Java >javaLernprogramm >Wie speichere ich mehrere Werte mit demselben Schlüssel in einer HashMap?
Erstellen von HashMaps mit mehreren Werten pro Schlüssel
In einigen Szenarien kann es erforderlich sein, mehrere Werte mit demselben Schlüssel in einer HashMap zu speichern . Obwohl Javas HashMap dies nicht nativ unterstützt, gibt es mehrere alternative Ansätze, um diese Funktionalität zu erreichen.
1. Karte mit Liste als Wert
Eine Möglichkeit besteht darin, eine HashMap zu erstellen, in der die Werte Listen sind. Dadurch können mehrere Werte einem einzelnen Schlüssel zugeordnet werden. Zum Beispiel:
Map<String, List<Person>> peopleByForename = new HashMap<>();
2. Wrapper-Klasse
Eine Alternative besteht darin, eine Wrapper-Klasse zu definieren, die die mehreren Werte enthält. Dieser Wrapper kann dann als Wert in der HashMap verwendet werden:
class Wrapper { private Person person1; private Person person2; public Wrapper(Person person1, Person person2) { this.person1 = person1; this.person2 = person2; } // Getter methods } Map<String, Wrapper> peopleByForename = new HashMap<>();
3. Tupel
Wenn Ihre Programmiersprache Tupel unterstützt, können Sie diese als Schlüssel oder Werte in einer HashMap verwenden. Zum Beispiel:
Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();
4. Mehrere Karten
Schließlich besteht eine andere Strategie darin, für jeden Werttyp separate Karten zu verwenden:
Map<String, Person> firstPersonByForename = new HashMap<>(); Map<String, Person> secondPersonByForename = new HashMap<>();
Beispiele
Betrachten Sie das Beispiel Szenario einer HashMap mit einer Benutzer-ID, einer Client-ID und einem Zeitstempel:
Option 1: Karte mit Liste als Wert
Map<Integer, List<Pair<String, Long>>> data = new HashMap<>(); data.put(1, Arrays.asList(new Pair<>("client-1", System.currentTimeMillis()))); data.put(1, Arrays.asList(new Pair<>("client-2", System.currentTimeMillis())));
Option 2: Wrapper-Klasse
class Data { private Integer userId; private String clientID; private Long timeStamp; public Data(Integer userId, String clientID, Long timeStamp) { this.userId = userId; this.clientID = clientID; this.timeStamp = timeStamp; } } Map<Integer, Data> data = new HashMap<>(); data.put(1, new Data(1, "client-1", System.currentTimeMillis())); data.put(1, new Data(1, "client-2", System.currentTimeMillis()));
Die Wahl des Ansatzes hängt von den spezifischen Anforderungen Ihres Unternehmens ab Anwendung und die verwendete Programmiersprache.
Das obige ist der detaillierte Inhalt vonWie speichere ich mehrere Werte mit demselben Schlüssel in einer HashMap?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!