Suchen von Schlüsseln, die mit Werten in HashMap verknüpft sind
Bei der Arbeit mit Hashmaps ist es oft notwendig, Schlüssel basierend auf bestimmten Werten abzurufen. Es gibt mehrere Ansätze, um diese Aufgabe in Java zu erfüllen.
Eine Möglichkeit besteht darin, das EntrySet() der HashMap zu durchlaufen und den Wert jedes Eintrags mit dem gewünschten zu vergleichen:
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; }
Wenn Sie es erwarten Wenn Sie eine Eins-zu-Eins-Beziehung zwischen Schlüsseln und Werten haben, können Sie den ersten passenden Schlüssel abrufen:
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; }
In Java 8 können Sie Streams nutzen 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()); }
Alternativ bietet die Guava-Bibliothek für Situationen mit bidirektionalen Zuordnungen BiMap, das direkte Schlüsselwertsuchen ermöglicht und umgekehrt. Zum Beispiel:
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 finde ich Schlüssel, die bestimmten Werten in einer HashMap zugeordnet sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!