Abrufen von Schlüsseln aus Werten in Java HashMap
HashMap ist eine wertvolle Java-Datenstruktur zum Speichern von Schlüssel-Wert-Paaren. Während das Abrufen von Werten aus Schlüsseln unkompliziert ist, kann das Abrufen von Schlüsseln aus Werten eine größere Herausforderung darstellen. Hier sind mehrere effiziente Methoden, um dies zu erreichen:
Eins-zu-Viele-Zuordnungen
In Situationen, in denen mehrere Schlüssel einem einzelnen Wert zugeordnet werden können, können Sie darüber iterieren HashMap-Einträge und sammeln Sie alle passenden Schlüssel:
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; }
Eins-zu-Eins Zuordnungen
Wenn jeder Wert einem eindeutigen Schlüssel zugeordnet ist, können Sie den ersten übereinstimmenden 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; }
Java 8 Stream Approach
Java 8 bietet eine praktische Methode zum Filtern und Sammeln von Übereinstimmungen Schlüssel:
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
In Fällen, in denen die bidirektionale Kartierung erforderlich ist, sollten Sie die Verwendung von Guava's BiMap 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 kann ich Schlüssel aus Werten in einer Java HashMap abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!