Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mendapatkan Kekunci daripada Nilai dalam 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!