Ich habe eine Hashmap in Java wie folgt:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Dann fülle ich es so:
team1.put("United", 5);
Wie kann ich die Schlüssel bekommen? So etwas wie team1.getKey()
"United" zurückzugeben.
java
data-structures
java-6
masb
quelle
quelle
team1.getKey()
, wenn: (1) die Karte leer ist oder (2) wenn sie mehrere Schlüssel enthält?int
sollte für solche wie diese verwendet werden.Antworten:
A
HashMap
enthält mehr als einen Schlüssel. Sie können verwendenkeySet()
, um den Satz aller Schlüssel zu erhalten.wird
1
mit Schlüssel"foo"
und2
mit Schlüssel gespeichert"bar"
. So durchlaufen Sie alle Schlüssel:druckt
"foo"
und"bar"
.quelle
List<String> keys = new ArrayList<>(mLoginMap.keySet());
Dies ist zumindest theoretisch möglich, wenn Sie den Index kennen:
keySet()
Gibt eine Menge zurück, sodass Sie die Menge in ein Array konvertieren.Das Problem ist natürlich, dass ein Set nicht verspricht, Ihre Bestellung zu behalten. Wenn Sie nur ein Element in Ihrer HashMap haben, sind Sie gut, aber wenn Sie mehr als das haben, ist es am besten, die Karte zu durchlaufen, wie es andere Antworten getan haben.
quelle
HashMap
. Gute Show.Überprüfen Sie dies.
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
(Verwenden Sie,
java.util.Objects.equals
weil HashMap enthalten kannnull
)Verwenden von JDK8 +
"Generischer" und so sicher wie möglich
Oder wenn Sie auf JDK7 sind.
quelle
HashMap
Schlüssel sind einzigartig.Map
Mit der Methode können Sie alle Schlüssel abrufenkeySet()
. Wenn Sie nun einen Schlüssel aufgrund seines Werts benötigen, ist das eine ganz andere Sache undMap
hilft Ihnen dort nicht weiter. Sie benötigen eine spezielle Datenstruktur wieBidiMap
(eine Karte, die eine bidirektionale Suche zwischen Schlüssel und Werten ermöglicht) aus Apaches Commons-Sammlungen. Beachten Sie auch, dass mehrere verschiedene Schlüssel demselben Wert zugeordnet werden können.quelle
Wenn Sie argument (
United
) erhalten möchten, für das der Wert angegeben ist (5
), können Sie auch eine bidirektionale Karte verwenden (z. B. von Guava bereitgestellt: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google) /common/collect/BiMap.html ).quelle
Wenn Sie nur etwas Einfaches und eher eine Überprüfung benötigen.
Dann können Sie nach einem beliebigen Schlüssel suchen.
quelle
quelle
next()
zweimal in der Schleife aufrufen, werden die ungeradzahligen Tasten zusammen mit den geradzahligen Werten gedruckt.Verwenden Sie die Funktionsoperation für eine schnellere Iteration.
team1.keySet().forEach((key) -> { System.out.println(key); });
quelle
Eine Lösung kann sein, wenn Sie die Schlüsselposition kennen, die Schlüssel in ein String-Array zu konvertieren und den Wert an der Position zurückzugeben:
quelle
Probieren Sie dieses einfache Programm aus:
quelle
quelle
Um Schlüssel in HashMap zu erhalten, haben wir die keySet () -Methode, die im
java.util.Hashmap
Paket vorhanden ist. Ex :Jetzt Tasten werden alle Ihre Schlüssel in der Karte zur Verfügung haben. Beispiel: [Schlüssel1, Schlüssel2]
quelle
java,util.HashMap
ist eine Klasse, kein Paket, und hier gibt es nichts, was vor fünf Jahren noch nicht hier war.Was ich tun werde, ist sehr einfach, aber Speicherverschwendung besteht darin, die Werte mit einem Schlüssel abzubilden und das Gegenteil zu tun, um die Schlüssel mit einem Wert abzubilden, der Folgendes ergibt:
private Map<Object, Object> team1 = new HashMap<Object, Object>();
Es ist wichtig, dass Sie verwenden,
<Object, Object>
damit Sie dies abbildenkeys:Value
undValue:Keys
mögen könnenteam1.put("United", 5);
team1.put(5, "United");
Also, wenn Sie
team1.get("United") = 5
und verwendenteam1.get(5) = "United"
Wenn Sie jedoch eine bestimmte Methode für eines der Objekte in den Paaren verwenden, ist es besser, wenn Sie eine andere Karte erstellen:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
private Map<Integer, String> team1Keys = new HashMap<Integer, String>();
und dann
team1.put("United", 5);
team1Keys.put(5, "United");
und denk dran, halte es einfach;)
quelle
Um Schlüssel und seinen Wert
z.B
Wird gedruckt: Schlüssel: United Wert: 5 Schlüssel: Barcelona Wert: 6
quelle