Java Hashmap의 값에서 키를 얻는 방법
- Java에서 BidiMap을 사용하여 값에서 단일 키 가져 오기
-
Java에서
map.entrySet()
를 사용하여 값에서 단일 키 가져 오기 - Java의 Stream API를 사용하여 값에서 여러 키 가져 오기
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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn