[Java/자바] Map에서 value값으로 key찾기

반응형

keySet()을 이용한 방법

keySet() 메서드는 HashMap의 모든 key들을 Set로 리턴합니다.

리턴한 Set의 key로 value를 가져와서, 찾고자하는 value값을 조건식으로 비교하여 해당 value의 key를 찾을 수 있습니다.

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

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> grade = new HashMap<>();
        grade.put("철수", 100);
        grade.put("짱구", 30);
        grade.put("훈이", 60);
        grade.put("맹구", 20);
        grade.put("유리", 90);

        for (String key : grade.keySet()) {
            // grade.get(key) = value 값
            if (grade.get(key) == 100) {
                System.out.println("100점을 맞은 학생은 : " + key);
            }
        }
    }
}


entrySet()을 이용한 방법

entrySet() 메서드는 Key와 Value에 대한 Map.Entry를 리턴합니다.

위와 동일한 방법으로 value를 비교하여 원하는 key들을 찾을 수 있습니다.

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

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> grade = new HashMap<>();
        grade.put("철수", 100);
        grade.put("짱구", 30);
        grade.put("훈이", 60);
        grade.put("맹구", 20);
        grade.put("유리", 90);

        for (Map.Entry<String, Integer> entry : grade.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            
            if (value == 90) {
                System.out.println("90점을 맞은 학생은 : " + key);
            }
        }
    }
}


 

Stream을 이용한 방법

최종연산을 toList()가 아닌 toSet()으로 Set을 반환할 수도 있으며, 원하는 반환 값으로 변경가능합니다.

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

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> grade = new HashMap<>();
        grade.put("철수", 100);
        grade.put("짱구", 30);
        grade.put("훈이", 60);
        grade.put("맹구", 20);
        grade.put("유리", 90);

        List<String> foundKey = grade.entrySet()
                .stream()
                .filter(entry -> Objects.equals(entry.getValue(), 20))
                .map(Map.Entry::getKey)
                .collect(Collectors.toList());

        System.out.println("20점을 맞은 학생은 : " + foundKey);
    }
}

 


참고자료
https://codechacha.com/ko/java-how-to-get-key-from-value-in-hashmap/