Java - HashMap에서 value로 key 찾는 방법

HashMap에서 value로 key 찾는 방법을 소개합니다.

1. keySet()을 이용한 방법

keySet()은 HashMap의 모든 key들을 Set로 리턴합니다. key로 value를 가져와서 찾으려는 value와 비교하면, key들을 찾을 수 있습니다.

import java.util.HashMap;
import java.util.Map;

public class GetKeyFromValueInHashMap {

    public static void main(String[] args) {

        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("melon", 2);
        map.put("kiwi", 3);
        map.put("banana", 2);

        for (String key : map.keySet()) {
            Integer value = map.get(key);
            System.out.println("Iterating, key: " + key);

            if (value == 2) {
                System.out.println("key of the value 2: " + key);
            }
        }
    }
}

Output:

Iterating, key: banana
key of the value 2: banana
Iterating, key: apple
Iterating, key: kiwi
Iterating, key: melon
key of the value 2: melon

2. entrySet()을 이용한 방법

entrySet()은 Key와 Value에 대한 Entry를 리턴합니다. 위와 동일한 방법으로 value를 비교하여 원하는 key들을 찾을 수 있습니다.

import java.util.HashMap;
import java.util.Map;

public class GetKeyFromValueInHashMap2 {

    public static void main(String[] args) {

        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("melon", 2);
        map.put("kiwi", 3);
        map.put("banana", 2);

        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println("Iterating, key: " + key + ", value: " + value);

            if (value == 2) {
                System.out.println("key of the value 2: " + key);
            }
        }
    }
}

Output:

Iterating, key: banana, value: 2
key of the value 2: banana
Iterating, key: apple, value: 1
Iterating, key: kiwi, value: 3
Iterating, key: melon, value: 2
key of the value 2: melon

3. Stream을 이용한 방법

Stream을 이용하여 value를 비교하고, 일치하는 value에 대한 key를 Set로 리턴할 수 있습니다.

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;

public class GetKeyFromValueInHashMap3 {

    public static void main(String[] args) {

        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("melon", 2);
        map.put("kiwi", 3);
        map.put("banana", 2);

        Set<String> foundKeys = map.entrySet()
                                   .stream()
                                   .filter(entry -> Objects.equals(entry.getValue(), 2))
                                   .map(Map.Entry::getKey)
                                   .collect(Collectors.toSet());

        System.out.println("Result: " + foundKeys);
    }
}

Output:

Result: [banana, melon]
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha