[JAVA] 람다 / 스트림

Gabriela·2023년 8월 7일
0

JAVA

목록 보기
22/24
post-thumbnail

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);


👉 스트림 활용 예제

깃허브(클릭)


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

profile
개발이 세상에서 제일 재밌어요

0개의 댓글

관련 채용 정보