Java Hashmap의 값에서 키를 얻는 방법

Rupam Yadav 2023년10월12일
  1. Java에서 BidiMap을 사용하여 값에서 단일 키 가져 오기
  2. Java에서map.entrySet()를 사용하여 값에서 단일 키 가져 오기
  3. Java의 Stream API를 사용하여 값에서 여러 키 가져 오기
Java Hashmap의 값에서 키를 얻는 방법

Hashmap은 Java의 필수 부분이며 키-값 쌍 방법을 사용하여 데이터에 대해 유연하게 작업 할 수있는 힘을 제공합니다. 값은 키에 첨부되어 있으며 키를 사용하여 값을 매우 쉽게 찾을 수 있습니다. 하지만 값에서 키를 가져 오려면 어떻게해야할까요?

이것이 우리가 여기서 논의 할 것입니다. 우리의 목표는 가치에 연결된 열쇠를 얻는 것입니다.

Java에서 BidiMap을 사용하여 값에서 단일 키 가져 오기

양방향 맵을 사용하여 값을 사용하여 키를 가져올 수 있습니다. 양방향 맵은 맵에서 중복 된 값이 없도록하고 해당 값을 사용하여 키를 가져올 수 있도록합니다. BidiMap은 Apache Commons Collections와 함께 제공되는 양방향지도입니다.

첫 번째이자 가장 중요한 단계는 프로젝트에 종속성을 포함하는 것입니다.

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.1</version>
        </dependency>

다음 예시에는 4 개의 키-값 쌍 요소가 포함 된 BidiMap이 있습니다. BidiMap은 고유 한 값을 포함하므로 하나의 키는 여러 값을 가질 수 없습니다. 이것이 우리가 각 값에서 하나의 키만 얻을 수있는 이유입니다.

import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.TreeBidiMap;

public class Main {
  public static void main(String[] args) {
    BidiMap<String, String> bidiMap = new TreeBidiMap<>();

    bidiMap.put("key1", "value1");
    bidiMap.put("key2", "value2");
    bidiMap.put("key3", "value3");
    bidiMap.put("key4", "value4");

    System.out.println(bidiMap.getKey("value4"));
  }
}

출력:

key4

Java에서map.entrySet()를 사용하여 값에서 단일 키 가져 오기

Java의Map에는 맵 요소 세트를 생성하고 루프를 통해 값이있는 키를 가져 오는 데 사용할 수있는 entrySet()메소드가 있습니다.

import java.util.*;

public class Main {
  public static void main(String[] args) {
    Map<String, Object> sampleMap = new HashMap<>();
    sampleMap.put("key1", "value1");
    sampleMap.put("key2", "value2");
    sampleMap.put("key3", "value3");
    sampleMap.put("key4", "value4");

    String getKeyFromValue = getSingleKeyFromValue(sampleMap, "value2");
    System.out.println(getKeyFromValue);
  }

  public static <K, V> K getSingleKeyFromValue(Map<K, V> map, V value) {
    for (Map.Entry<K, V> entry : map.entrySet()) {
      if (Objects.equals(value, entry.getValue())) {
        return entry.getKey();
      }
    }
    return null;
  }

출력:

key2

Java의 Stream API를 사용하여 값에서 여러 키 가져 오기

우리는 값에서 단일 키를 얻는 방법을 보았지만Map은 단일 키에 여러 값을 첨부 할 수 있습니다. 값의 모든 키를 가져 오기 위해 Java 8의Stream API를 사용합니다.

아래 예제는 키를 찾기 위해Map과 값을 취하는getMultipleKeysByValue()메소드를 사용합니다. 그런 다음 결과로 키 목록을 반환합니다.

import java.util.*;
import java.util.stream.Collectors;

public class Main {
  public static void main(String[] args) {
    Map<String, Object> sampleMap = new HashMap<>();
    sampleMap.put("key1", "value1");
    sampleMap.put("key2", "value1");
    sampleMap.put("key3", "value2");
    sampleMap.put("key4", "value1");

    List<String> getKeysFromValue = getMultipleKeysByValue(sampleMap, "value1");
    System.out.println(getKeysFromValue);
  }

  public static <String> List<String> getMultipleKeysByValue(
      Map<String, Object> map, Object value) {
    return map.entrySet()
        .stream()
        .filter(entry -> Objects.equals(entry.getValue(), value))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());
  }
}

출력:

[key1, key2, key4]
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Hashmap

관련 문장 - Java Map