首頁 >Java >java教程 >如何從 Java HashMap 中的值檢索鍵?

如何從 Java HashMap 中的值檢索鍵?

Barbara Streisand
Barbara Streisand原創
2024-12-19 08:59:09392瀏覽

How to Retrieve Keys from Values in a Java HashMap?

從Java 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流方法:

對於 Java 8 及以上版本的用戶,流操作可以提供一種簡潔的方式來檢索金鑰。

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());
}

番石榴的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn