프로그래밍 언어/JAVA

Java Hashmap : Value에서 Key를 얻는 방법

Rateye 2021. 11. 3. 10:26
728x90
반응형
질문 : Java Hashmap : 값에서 키를 얻는 방법?

"foo" 값이 있고 ftw.containsValue("foo")true 반환하는 HashMap<String> ftw 가있는 경우 해당 키를 어떻게 얻을 수 있습니까? 해시 맵을 반복해야합니까? 그렇게하는 가장 좋은 방법은 무엇입니까?

답변

표준 Java Collections 프레임 워크 대신 Commons Collections 라이브러리 를 사용하도록 선택하면이를 쉽게 달성 할 수 있습니다.

Collections 라이브러리의 BidiMap 인터페이스는 양방향 맵으로, 키를 값 (예 : 노멀 맵)에 매핑하고 값을 키에 매핑 할 수 있으므로 양방향으로 조회를 수행 할 수 있습니다. 값에 대한 키를 얻는 것은 getKey() 메서드에서 지원됩니다.

하지만주의 할 점이 있습니다. bidi 맵은 키에 매핑 된 여러 값을 가질 수 없으므로 데이터 세트에 키와 값 간의 1 : 1 매핑이없는 경우 bidi 맵을 사용할 수 없습니다.


Java Collections API를 사용하려면 값을 맵에 삽입 할 때 키와 값 사이의 1 : 1 관계를 확인해야합니다. 이것은 말처럼 쉬운 일입니다.

이를 확인한 후 entrySet() 메서드를 사용하여 맵의 항목 집합 (매핑)을 가져옵니다. Map.Entry 인 세트를 얻은 후에는 항목을 반복하여 저장된 값 을 예상 값과 비교하고 해당 키를 얻습니다.


제네릭 을 사용한 bidi 맵에 대한 지원 은 Google Guava 및 리팩터링 된 Commons-Collections 라이브러리 (후자는 Apache 프로젝트가 아님)에서 찾을 수 있습니다. Apache Commons Collections에서 누락 된 일반 지원을 지적 해 주신 Esko에게 감사드립니다. 제네릭과 함께 컬렉션을 사용하면 코드를보다 쉽게 유지할 수 있습니다.


버전 4.0 부터 공식 Apache Commons Collections ™ 라이브러리는 제네릭을 지원합니다.

현재 Java 제네릭을 BidiMap , OrderedBidiMapSortedBidiMap 인터페이스의 사용 가능한 구현 목록은 "org.apache.commons.collections4.bidimap "패키지의 요약 페이지를 참조하십시오.

출처 : https://stackoverflow.com/questions/1383797/java-hashmap-how-to-get-key-from-value
728x90
반응형