for문과 같이, 리스트 속 요소를 순서대로 꺼내 어떠한 처리를 해줄 때 사용하는 메소드이다. 람다식을 사용해서 작성해야한다.
익명 개체를 생성하는 익명 함수와 같다. 코드를 보다 간단하게 표현할 수 있는 방법이다. ->
를 사용하여 나타낸다. 인텔리제이에 자동 변환 기능이 있다.
list.forEach(s -> System.out.println(s));
리스트 list
속 값을 순회하며 저장되는 변수 s
를 출력하는 코드이다.
map.forEach((key, value) ->
System.out.println("key : " + key + "value : " + value));
map
의 key
와 value
를 람다 식으로 불러올 수 있다.
Arrays.stream(arr).forEach(s -> System.out.println(s));
배열은 stream
을 사용해야 한다.
::
연산자는 람다식에서 매개변수를 중복해서 사용할 때 생략 가능하도록 돕는다. 인스턴스 :: 메소드명
형식으로 주로 사용한다.
// 기존의 람다식
list.forEach(s -> System.out.println(s));
// 생략
list.forEach(System.out::println);
System.out
이 인스턴스이고, println
이 메소드에 해당한다. 중복되는 변수 s
를 생략하기 위해 변경할 수 있다.
/// 기존의 람다식
list.forEach(s -> new addItem(s));
//생략
list.forEach(addItem::new);
이처럼 다양한 방법으로 생략 가능하다.