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
Lepaskan: 2024-12-15 21:15:20
asal
497 orang telah melayarinya

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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());
}
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan