Java 8 람다(Lambda) 적용 예

람다(Lamdba) 란

람다식, 또는 람다 함수라 부른다.
프로그래밍 언어에서 사용되는 개념으로, 익명 함수(Anonymous functions)를 지칭하는 용어이다.
나무위키

예제

Map에서 특정한 값을 가지는 entry에 대해서 삭제하는 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Map<String, String> map = new HashMap<>();
map.put("XXX", "111");
map.put("YYY", "222");
map.put("ZZZ", "333");
map.put("AAA", "444");
map.put("BBB", "555");

map.entrySet().stream()
.filter(entry -> entry.getValue().equals("111"))
.map(entry -> entry.getKey())
.collect(Collectors.toList())
.forEach(map::remove);

System.out.println(map);

실행 결과입니다.

1
{YYY=222, ZZZ=333, AAA=444, BBB=555}

만약, collect 함수를 삭제할 경우 컴파일 에러는 없지만 다음과 같은 예외를 발생합니다.

1
2
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:20)

삭제하는 코드를 간략하게 구현할 수 있지만 위의 예제는 람다식의 다양한 함수를 보여주기 위해 사용하였습니다.

Share