Karten mit mehreren Arten von Werten in java
Ich habe dazu eine seltsame eigenartige Szenario. Seine wie folgt beschrieben:
Habe ich um eine Karte zu entwerfen, wo die "Schlüssel " sind immer von String geben. Aber, die " Wert' für eine der wichtigsten kann ein String oder eine Liste(hängt von der Anzahl der Werte für einen bestimmten Schlüssel haben kann. 'Wert' ist, wird eine Zeichenfolge, wenn Sie diesen Schlüssel hat nur einen Wert und es hat eine Liste, wenn der Schlüssel enthält viele Werte). Wie das zu erreichen ist dieses Szenario?
Zum Beispiel: es gibt 2 Schlüssel in eine map, nämlich "Name" und "Telefonnummern". Eine person kann nur einen Namen und mehrere Telefonnummern. So, hier die erste Taste, d.h. "Namen" haben sollte Typ 'String' für Wert, während für den zweiten Schlüssel, also "Telefonnummern" sollte eine "Liste" geben Sie für den Wert. Wie zu erklären, wie eine Karte. Ist es möglich?
- Gleiche Hausaufgabe wie: stackoverflow.com/questions/9259997/... ???
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich, etwas zu tun, wie
Map<String, Object>
.Aber: ich würde stark vorschlagen, zu denken, Ihr design über. Sollten Sie eine Klasse für Ihre Personen statt. Auf diese Weise könnte man tun:
Map<String, Person>
mitPerson
mit Getter und setter für Namen, Telefon-Nummern und andere Informationen.Beispiel
Person
Klasse:Gibt es natürlich. Wählen Sie Ihr Gift:
Gut, warum nicht ein
Map<String, List<String>>
? man könnte immer nur hinzufügen, ein element zu Ihrer Liste, wenn es nur einen Wert ein oder verwenden Sie einen gemeinsamen Supertyp von String-und die Liste, damit würden Sie bekommen"Name" -> "Sam Something", "Phone Nos" -> "1234", "5678"
was immer noch nicht funktioniert mit deinem Beispiel.ListMultimap
ist eine bessere Sammlung zu nutzen, anstattMap<X, List<Y>>
Ich würde führen Sie einen der folgenden Schritte aus:
Verwenden
Multimap<String, String>
. Die Multimap würde enthalten ein oder mehrere Werte zugeordnet sind, jede Taste.Verwenden
Map<String, Either<String, List<String>>>
. Verwenden Sie eine Entweder zu unterscheiden zwischen einem einzelnen oder mehreren Werten.Warum machen Sie nicht eine Telefonnummer wrapper-Klasse stellt eine API für soring entweder eine oder multipel Telefon zahlen und dann abrufen können entweder einen oder alle (mehrere) Telefonnummern und dann eine map von String und Telefonnummer? So etwas wie:
}