Map 타입의 forEach (feat. Biconsumer)

2023. 1. 31. 09:51Backend/☕️ Java

Biconsumer 공부하다가 Map 타입에 forEach 를 실행시키면 어떤 인자가 나오는지 알게 됐다.

보통 Map 타입을 iterable 하게 사용하는 경우엔, 아래처럼 향상된 for 문을 작성했다.

void 테스트() {

        Map<String, Integer> map = new HashMap<>();
        
        for (String s : map.keySet()) {
            System.out.println("s = " + s);
        }
        
        for (Integer value : map.values()) {
            System.out.println("value = " + value);
        }
        
        for (Map.Entry<String, Integer> stringIntegerEntry : map.entrySet()) {
            System.out.println("stringIntegerEntry.getKey() = " + stringIntegerEntry.getKey());
            System.out.println("stringIntegerEntry.getValue() = " + stringIntegerEntry.getValue());
        }
        
}

 

그러다 방금 biconsumer 를 조사하다 알게된 Map 타입의 forEach() 

void 테스트() {

        Map<String, Integer> map = new HashMap<>();
        
        BiConsumer<String, Integer> biConsumer =
            (key, value) -> System.out.println("key: " + key + ", value: " + value);

        map.forEach(biConsumer);

}

map 변수에서 forEach를 호출할 때 인자로 biConsumer를 사용할 수 있다.

biConsumer 는 2개의 인자를 받는 함수형 인터페이스로. map 변수로부터 2개의 인자를 받는다.

2개의 인자는 예상하신대로 key 와 value

 

즉 이렇게 풀어 쓸 수 있다.

map.forEach((k, v) -> System.out.println("key: " + k + ", value: " + v));

 

정리하고 보니 썩 대단한 내용은 아니네 ㅎ

그럼 마저 Biconsumer 공부하러 이만