529 Stimmen

Java Hashmap: So erhalten Sie den Schlüssel vom Wert?

Wenn ich den Wert "foo" habe und eine HashMap ftw, für die ftw.containsValue("foo") true zurückgibt, wie kann ich den entsprechenden Schlüssel erhalten? Muss ich durch die HashMap schleifen? Wie ist der beste Weg, das zu tun?

0voto

Kaplan Punkte 1226

lambda ohne Verwendung externer Bibliotheken
kann mit mehreren Werten für einen Schlüssel umgehen (im Unterschied zum BidiMap)

public static List getKeysByValue(Map map, String value) {
  List list = map.keySet().stream()
      .collect(groupingBy(k -> map.get(k))).get(value);
  return (list == null ? Collections.emptyList() : list);
}

erhält eine List die den/die Schlüssel enthält, die value zugeordnet sind
für eine 1:1-Zuordnung ist die zurückgegebene Liste leer oder enthält 1 value

0voto

smftr Punkte 843

Lassen Sie mein Beispiel sehen

Map mapPeopleAndCountry = new HashMap<>();
mapPeopleAndCountry.put("Matis", "Litauen");
mapPeopleAndCountry.put("Carlos", "Honduras");
mapPeopleAndCountry.put("Teboho", "Lesotho");
mapPeopleAndCountry.put("Marielos", "Honduras");

List peopleInHonduras = mapPeopleAndCountry.keySet()
    .stream()
    .filter(r -> mapPeopleAndCountry.get(r)
                .equals("Honduras"))
    .stream(Collectors.toList());

// gibt ["Carlos", "Marielos"] zurück

Hinweis: nicht getestet, können Tippfehler enthalten

-1voto

Sreedhar GS Punkte 2530
Iterator> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry entry = iterator.next();
    if (entry.getValue().equals(value_you_look_for)) {
        String key_you_look_for = entry.getKey();
}
}

-3voto

Jasur Hakim Punkte 1

Sie können diese Arbeit auch erledigen: Erstens: Karte (Schlüssel, Wert) einfügen Zweitens: Um den Schlüssel zu aktualisieren, müssen Sie den Ausdruck entfernen Drittens: und einen neuen Schlüssel mit dem alten Wert einfügen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X