질문 : 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
, OrderedBidiMap
및 SortedBidiMap
인터페이스의 사용 가능한 구현 목록은 "org.apache.commons.collections4.bidimap "패키지의 요약 페이지를 참조하십시오.
출처 : https://stackoverflow.com/questions/1383797/java-hashmap-how-to-get-key-from-value
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JavaScript의 객체 배열에서 고유 한 값을 얻는 방법 (0) | 2021.11.03 |
---|---|
중첩 된 JavaScript 개체 키의 존재 여부 테스트 (0) | 2021.11.03 |
Java에서 함수를 매개 변수로 전달하는 방법 (0) | 2021.11.02 |
Jackson JSON 및 Hibernate JPA 문제가있는 무한 재귀 (0) | 2021.11.02 |
자바 스크립트 private 메서드 (0) | 2021.11.01 |