Abrufen von Schlüsseln aus HashMap-Werten
In Java kann es bei der Arbeit mit Hashmaps zu Situationen kommen, in denen Sie einen Wert haben und diesen erhalten möchten den entsprechenden Schlüssel. Um dies zu erreichen, stehen mehrere Methoden zur Verfügung.
Schleife durch Einträge
Der einfachste Ansatz besteht darin, alle Einträge in der HashMap zu durchlaufen:
public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) { Set<T> keys = new HashSet<>(); for (Entry<T, E> entry : map.entrySet()) { if (Objects.equals(value, entry.getValue())) { keys.add(entry.getKey()); } } return keys; }
Zurückgeben des ersten passenden Schlüssels
Wenn Sie einen haben Bei der Eins-zu-Eins-Zuordnung können Sie den ersten passenden Schlüssel zurückgeben:
public static <T, E> T getKeyByValue(Map<T, E> map, E value) { for (Entry<T, E> entry : map.entrySet()) { if (Objects.equals(value, entry.getValue())) { return entry.getKey(); } } return null; }
Verwenden von Java 8-Streams
Für Java 8-Benutzer können Sie Streams für verwenden prägnanterer Code:
public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) { return map.entrySet() .stream() .filter(entry -> Objects.equals(entry.getValue(), value)) .map(Map.Entry::getKey) .collect(Collectors.toSet()); }
Guava's BiMap
Wenn Sie lieber Guava verwenden möchten, sollten Sie dessen BiMap für bidirektionale Zuordnungen in Betracht ziehen:
BiMap<Token, Character> tokenToChar = ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '('); Token token = tokenToChar.inverse().get('('); Character c = tokenToChar.get(token);
Das obige ist der detaillierte Inhalt vonWie rufe ich Schlüssel aus HashMap-Werten in Java ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!