從HashMap 值擷取鍵
在Java 中,使用Hashmap 時,可能會出現這樣的情況:您有一個值並希望取得其對應的鍵。為此,可以使用多種方法。
循環條目
最簡單的方法是迭代 HashMap 中的所有條目:
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; }
傳回第一個符合的鍵
如果有一對一映射,則可以傳回第一個符合的鍵:
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 Streams
對於Java 8用戶,您可以使用流來更簡潔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 的BiMap
如果您更喜歡使用Guava,請考慮使用其BiMap 進行雙向映射:
BiMap<Token, Character> tokenToChar = ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '('); Token token = tokenToChar.inverse().get('('); Character c = tokenToChar.get(token);
以上是如何在 Java 中從 HashMap 值檢索鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!