


Wie kann ich in einer Java HashMap mehrere Werte unter einem einzigen Schlüssel speichern?
Mehrere Werte unter einem einzelnen Schlüssel in einer HashMap speichern
Maps in Java verknüpfen Schlüssel mit einzelnen Werten, es kann jedoch sein, dass dies erforderlich ist Speichern Sie mehrere Werte unter demselben Schlüssel. In dieser Frage wird untersucht, wie diese Funktionalität erreicht werden kann.
Karte mit Liste als Wert
Ein Ansatz besteht darin, eine Karte zu verwenden, bei der der Wert eine Liste ist. Dadurch können Sie mehrere Werte als Liste speichern, die dem Schlüssel zugeordnet ist. Dies hat jedoch die Einschränkung, dass die Liste eine beliebige Anzahl von Werten enthalten kann, nicht nur zwei.
Verwenden einer Wrapper-Klasse
Sie können auch eine separate Wrapper-Klasse erstellen das die Werte enthält und Instanzen dieses Wrappers in der Karte platziert. Dieser Ansatz erfordert die Definition einer Klasse und das Erstellen von Instanzen für jeden Schlüssel, was zu zusätzlichem Code führt.
Tupelbasierter Ansatz
Wenn Sie eine feste Anzahl von Werten erzwingen möchten , können Sie eine Tupelklasse verwenden (häufig in Bibliotheken zu finden oder indem Sie Ihre eigene implementieren). Karten können dann Tupel als Werte speichern und so eine konsistente Struktur für mehrere Werte unter einem Schlüssel gewährleisten.
Mehrere Karten
Eine andere Möglichkeit besteht darin, mehrere Karten zu verwenden, eine für jede Wert. Dieser Ansatz ist unkompliziert, birgt jedoch möglicherweise das Risiko, dass die Karten nicht mehr synchron sind, wenn sie nicht sorgfältig behandelt werden.
Beispiele
Karte mit Liste als Wert
import java.util.*; class Person { String name; public Person(String name) { this.name = name; } public String toString() { return this.name; } } class HashMapMultiple { public HashMapMultiple() { Map<String, List<Person>> peopleByForename = new HashMap<>(); List<Person> people = new ArrayList<>(); people.add(new Person("Bob Smith")); people.add(new Person("Bob Jones")); peopleByForename.put("Bob", people); List<Person> bobs = peopleByForename.get("Bob"); Person bob1 = bobs.get(0); Person bob2 = bobs.get(1); System.out.println("Bob1: " + bob1); System.out.println("Bob2: " + bob2); } public static void main(String[] args) { new HashMapMultiple(); } }
Verwenden eines Wrappers Klasse
import java.util.*; class Person { String name; public Person(String name) { this.name = name; } public String toString() { return this.name; } } class Wrapper { public Wrapper(Person person1, Person person2) { this.person1 = person1; this.person2 = person2; } public Person getPerson1() { return this.person1; } public Person getPerson2() { return this.person2; } private Person person1; private Person person2; } class HashMapMultiple { public HashMapMultiple() { Map<String, Wrapper> peopleByForename = new HashMap<>(); peopleByForename.put("Bob", new Wrapper(new Person("Bob Smith"), new Person("Bob Jones"))); Wrapper bobs = peopleByForename.get("Bob"); Person bob1 = bobs.getPerson1(); Person bob2 = bobs.getPerson2(); System.out.println("Bob1: " + bob1); System.out.println("Bob2: " + bob2); } public static void main(String[] args) { new HashMapMultiple(); } }
Tupelbasierter Ansatz
Dieser Ansatz erfordert eine Tupelklasse:
import java.util.*; class Person { String name; public Person(String name) { this.name = name; } public String toString() { return this.name; } } class Tuple2<T1,T2> { public Tuple2(T1 val1, T2 val2) { this.val1 = val1; this.val2 = val2; } public T1 val1; public T2 val2; } class HashMapMultiple { public HashMapMultiple() { Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>(); peopleByForename.put("Bob", new Tuple2<Person, Person>(new Person("Bob Smith"), new Person("Bob Jones"))); Tuple2<Person, Person> bobs = peopleByForename.get("Bob"); Person bob1 = bobs.val1; Person bob2 = bobs.val2; System.out.println("Bob1: " + bob1); System.out.println("Bob2: " + bob2); } public static void main(String[] args) { new HashMapMultiple(); } }
Mehrere Karten
import java.util.*; class Person { String name; public Person(String name) { this.name = name; } public String toString() { return this.name; } } class HashMapMultiple { public HashMapMultiple() { 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")); Person bob1 = firstPersonByForename.get("Bob"); Person bob2 = secondPersonByForename.get("Bob"); System.out.println("Bob1: " + bob1); System.out.println("Bob2: " + bob2); } public static void main(String[] args) { new HashMapMultiple(); } }
Das obige ist der detaillierte Inhalt vonWie kann ich in einer Java HashMap mehrere Werte unter einem einzigen Schlüssel speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Detaillierte Erläuterung des Designs von SKU- und SPU-Tabellen auf E-Commerce-Plattformen In diesem Artikel werden die Datenbankdesignprobleme von SKU und SPU in E-Commerce-Plattformen erörtert, insbesondere wie man mit benutzerdefinierten Verkäufen umgeht ...

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...
