Rumah >Java >javaTutorial >Bagaimana untuk Mendapatkan Kekunci daripada HashMap Memandangkan Nilainya?

Bagaimana untuk Mendapatkan Kekunci daripada HashMap Memandangkan Nilainya?

Susan Sarandon
Susan Sarandonasal
2024-12-18 08:46:10729semak imbas

How to Retrieve Keys from a HashMap Given Its Values?

Mendapatkan Kekunci daripada HashMaps Berdasarkan Nilai

Memandangkan HashMap dengan nilai yang disimpan pada kekunci, mari kita terokai cara mendapatkan semula kunci yang sepadan dengan a khusus nilai.

Kekunci Nilai-kepada-Berbilang:

Jika pasangan nilai kunci boleh memetakan kepada berbilang nilai, anda perlu mengulangi entri dan penapis yang mempunyai nilai yang diingini:

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

Nilai-untuk-Tunggal Kunci:

Jika terdapat pemetaan satu sama lain antara kunci dan nilai, anda boleh terus mengembalikan kunci padanan pertama:

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

Menggunakan Java 8 Streams :

Dengan Java 8 strim, anda boleh menapis dan memetakan entri lebih banyak dengan cekap:

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:

Jika anda menggunakan Guava, koleksi BiMap menyediakan cara yang lebih mudah untuk bekerja dengan pemetaan songsang:

BiMap<Token, Character> tokenToChar =
    ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '(');
Token token = tokenToChar.inverse().get('(');
Character c = tokenToChar.get(token);

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kekunci daripada HashMap Memandangkan Nilainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn