Nachfolgend sind die in der HashMap enthaltenen Werte aufgeführt
statusName {Active=33, Renewals Completed=3, Application=15}
Java-Code zum Abrufen des ersten Schlüssels (dh Aktiv)
Object myKey = statusName.keySet().toArray()[0];
Wie können wir den ersten Schlüssel "Wert" (dh 33) sammeln? Ich möchte sowohl den "Schlüssel" als auch den "Wert" in einer separaten Variablen speichern.
HashMap
Einträge ungeordnet sind und sich "first" ändern kann, wenn Sie die Karte ändern?HashMap
? Wenn Sie es überhaupt ändern, erhalten Sie die Ergebnisse möglicherweise in einer völlig anderen Reihenfolge.Antworten:
Sie können dies versuchen:
Beachten Sie,
HashMap
garantiert nicht die Einfügereihenfolge. Verwenden Sie aLinkedHashMap
, um die Bestellung intakt zu halten.Z.B:
Ausgabe:
quelle
com.google.gson.internal.LinkedTreeMap cannot be cast to...
ich das gleiche mit Objekt für einen Wert versuche, der einen Casting-Fehler erhält: ... meine Klasse, die ich anstelle derString
am richtigen Ort angegeben habe ... kann online keine Antwort finden ... HilfeGson
, um ein Wertobjekt in ein zu konvertierenString
und es dann wieder in meinen Klassentyp zu analysieren. Es ist hässlich, aber ich konnte wirklich keine andere Lösung für etwas finden, das in anderen Sprachen so einfach zu machen ist (ich lerne jetzt Java)So erhalten Sie den "ersten" Wert:
So erhalten Sie den Wert des "ersten" Schlüssels:
Hinweis: Der obige Code wurde getestet und funktioniert.
Ich sage "zuerst", weil HashMap-Einträge nicht bestellt werden.
Eine LinkedHashMap iteriert ihre Einträge jedoch in derselben Reihenfolge, in der sie eingefügt wurden. Sie können diese für Ihre Map-Implementierung verwenden, wenn die Einfügereihenfolge wichtig ist.
quelle
Java 8 Art zu tun,
String firstKey = map.keySet().stream().findFirst().get();
quelle
Sie können dies auch versuchen, um den gesamten ersten Eintrag zu erhalten.
Dies, um nur den Schlüssel des ersten Eintrags zu erhalten,
Dies, um nur den Wert des ersten Eintrags zu erhalten,
Wenn Sie wissen, was Sie tun und das zweite (gleiche für das dritte usw.) Element einer Karte erhalten möchten, sollten Sie dies versuchen:
quelle
Mit verwenden
youMap.get(keyYouHave)
können Sie den Wert davon erhalten.Ja, das können Sie einer Variablen zuordnen.
Warten Sie ......... es ist noch nicht vorbei.
Wenn Sie (Geschäftslogik) von der Reihenfolge des Einfügens und Abrufens abhängen, werden Sie seltsame Ergebnisse sehen. Karte ist nicht bestellt, sie werden nicht in einer Bestellung gespeichert. Bitte beachten Sie diese Tatsache. Verwenden Sie eine Alternative, um Ihre Bestellung zu erhalten. Wahrscheinlich ein
LinkedHashMap
quelle
Beachten Sie, dass Sie beachten sollten, dass Ihr Logikfluss niemals auf den Zugriff auf die
HashMap
Elemente in einer bestimmten Reihenfolge angewiesen sein darf. Einfach ausgedrückt, weilHashMap
s nicht geordnet sindCollection
und dies nicht das Ziel ist. (Weitere Informationen zu geordneten und sortierten Sammlungen finden Sie in diesem Beitrag. )Zurück zum Beitrag, Sie haben bereits die Hälfte der Arbeit erledigt, indem Sie den ersten Elementschlüssel geladen haben:
Rufen Sie einfach
map.get(key)
an, um den entsprechenden Wert zu erhalten:quelle
Denken Sie daran, dass die Einfügereihenfolge in einer Karte im Allgemeinen nicht eingehalten wird. Versuche dies :
Ich benutze dies nur, wenn ich mir sicher bin, dass das so ist
map.size() == 1
.quelle
Whoamis Antwort verbessern. Da
findFirst()
ein zurückgegeben wirdOptional
, empfiehlt es sich zu überprüfen, ob ein Wert vorhanden ist.Einige kommentierten auch, dass das Finden des ersten Schlüssels von a
HashSet
unzuverlässig ist. Aber manchmal haben wirHashMap
Paare; dh in jeder Karte haben wir einen Schlüssel und einen Wert. In solchen Fällen ist es bequem, den ersten Schlüssel eines solchen Paares schnell zu finden.quelle
Auch eine schöne Art dies zu tun :)
quelle
Sie können auch unten versuchen:
quelle