HashMap의 값과 연관된 키 찾기
해시맵 작업 시 특정 값을 기반으로 키를 검색해야 하는 경우가 많습니다. Java에서 이 작업을 수행하는 방법에는 여러 가지가 있습니다.
한 가지 옵션은 HashMap의 EntrySet()을 반복하고 각 항목의 값을 원하는 값과 비교하는 것입니다.
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; }
예상하는 경우 키와 값 사이의 일대일 관계에서는 첫 번째로 일치하는 키를 검색할 수 있습니다.
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; }
Java 8에서는 보다 간결한 코드를 위해 스트림을 활용할 수 있습니다.
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을 제공합니다. 예를 들면 다음과 같습니다.
BiMap<Token, Character> tokenToChar = ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '('); Token token = tokenToChar.inverse().get('('); Character c = tokenToChar.get(token);
위 내용은 HashMap의 특정 값과 연관된 키를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!