Map 타입의 forEach (feat. Biconsumer)
2023. 1. 31. 09:51ㆍBackend/☕️ 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 공부하러 이만
'Backend > ☕️ Java' 카테고리의 다른 글
[Java] 런타임에 메서드를 전달한다는게 무슨 말일까? (0) | 2023.07.17 |
---|---|
Optional, ifPresentOrElse 로 간단한 리팩토링 (0) | 2023.03.09 |
InputStream 사용시 발생한 간단 장애 회고 (0) | 2023.01.01 |
[Java] long 에서 int "안전하게" 형변환 / 타입 캐스팅 (0) | 2022.12.17 |
함수형 인터페이스를 사용하여 if 문 제거하기 (1) | 2022.07.10 |