Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mendapatkan Kekunci daripada Nilai dalam Java HashMap?

Bagaimanakah Saya Boleh Mendapatkan Kekunci daripada Nilai dalam Java HashMap?

Linda Hamilton
Linda Hamiltonasal
2024-12-15 21:15:20499semak imbas

How Can I Retrieve Keys from Values in a Java HashMap?

Mendapatkan Kekunci daripada Nilai dalam Java HashMap

HashMap ialah struktur data Java yang berharga untuk menyimpan pasangan nilai kunci. Walaupun mendapatkan semula nilai daripada kunci adalah mudah, mendapatkan semula kunci daripada nilai boleh menjadi lebih mencabar. Berikut ialah beberapa kaedah yang cekap untuk mencapai perkara ini:

Pemetaan Satu-ke-Banyak

Dalam situasi di mana berbilang kekunci boleh memetakan kepada satu nilai, anda boleh mengulangi Entri HashMap dan kumpulkan semua kunci yang sepadan:

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

Satu-dengan-Satu Pemetaan

Apabila setiap nilai dipetakan ke kunci unik, anda boleh mengembalikan kunci pertama yang dipadankan:

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

Pendekatan Strim Java 8

Java 8 menyediakan kaedah yang mudah untuk menapis dan mengumpul padanan kunci:

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

Untuk kes di mana pemetaan dua arah diperlukan, pertimbangkan untuk menggunakan BiMap Guava:

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 Bagaimanakah Saya Boleh Mendapatkan Kekunci daripada Nilai dalam Java HashMap?. 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