Lambda
람다 표현식
Anonymous Inner Type
방식의 객체를 생성할 때 사용할 수 있는 표현식이다.
- 추상 메소드가 하나인 인터페이스에서 람다 표현식을 사용할 수 있다.
(함수형 인터페이스 : 추상 메소드가 하나인 인터페이스)
형식
(매개변수) -> {
본문;
}
@FunctionalInterface
- 함수형 인터페이스에 작성하는
Annotation
이다.
- 추상 메소드를 하나만 가진 인터페이스에 작성할 수 있다.
- 람다 표현식으로 객체를 생성할 수 있는 인터페이스이다.
Supplier 인터페이스
형식
@FunctionalInterfave
public interface Supplier<T> {
T get();
}
- 파라미터가 없고 반환 값이 있는
get()
메소드를 가진 함수형 인터페이스이다.
- 항상 값을 제공하기 때문에 "제공자(Supplier)"라고 부른다.
Consumer 인터페이스
형식
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
- 하나의 파라미터를 받아서 사용하고 반환하지 않는 함수형 인터페이스이다.
accept()
추상 메소드를 가지고 있다.
- 값을 받아서 사용만 하기 때문에 "소비자(Consumer)"라고 부른다.
Function 인터페이스
형식
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
- 하나의 파라미터를 받아서 특정 처리를 한 뒤 해당 값을 반환하는 함수형 인터페이스이다.
파라미터 T
를 받아서 R을 반환
하는 apply()
메소드를 가지고 있다.
- 특정 처리를 한 뒤 처리된 값을 반환하기 때문에 "함수(Function)"라고 부른다.
Predicate 인터페이스
형식
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
- 하나의 파라미터를 전달 받아서
true
또는 false
를 반환하는 함수형 인터페이스이다.
- 특정 값을 전달하면 해당 값을 검사한 뒤 true/false 여부를 반환하는
test()
메소드를 가지고 있다.
- 어떤 값이 조건을 만족하는지 설명하기 때문에 "설명(Predicate)"이라고 부른다.
메소드 참조(method reference)
- 람다식이 오직 1개의 메소드만 호출하는 경우에 불필요한 매개변수 선언을 제거하고 사용할 수 있도록 도와주는 방식이다.
- 문법상으로만 매개변수가 제거되는 것이지 실제로 제거되는 것은 아니다. (여전히 매개변수로 인수를 전달할 수 있다.)
- 매개변수가 제거되기 때문에 람다식의
() ->
부분이 없어진다.
형식
👉 람다 활용예제
깃허브(클릭)
Stream
forEach() 메소드
Stream 파이프라인
의 마지막에 사용할 수 있는 메소드 중 하나이다.
Stream 파이프라인
의 각 요소를 순회할 때 사용한다.
for문
처럼 동작한다.
형식
void forEach(Consumer<T> consumer);
👉 스트림 활용 예제
깃허브(클릭)

이게뭐야~! 뭐 이렇게 재밌는게 다 있 어!!!!!!!