Rumah >Java >javaTutorial >Bagaimana untuk Mendapatkan Kekunci daripada HashMap Memandangkan Nilainya?
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!