Mendapatkan Kekunci daripada Nilai HashMap
Di Jawa, apabila bekerja dengan Hashmaps, mungkin timbul situasi di mana anda mempunyai nilai dan ingin mendapatkan kunci yang sepadan. Untuk mencapai matlamat ini, beberapa kaedah tersedia.
Menggelung Melalui Entri
Pendekatan paling mudah melibatkan lelaran ke atas semua entri dalam 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; }
Memulangkan Kunci Padanan Pertama
Jika anda mempunyai pemetaan satu sama satu, anda boleh 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 Stream
Untuk pengguna Java 8, anda boleh menggunakan strim untuk kod yang lebih ringkas:
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
Jika anda lebih suka menggunakan Jambu Batu, pertimbangkan untuk menggunakan BiMapnya untuk pemetaan dua arah:
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 Kunci dari Nilai HashMap di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!