[기술 정리] 1. 람다식(Lambda Expression)

KangHo Lee's avatar
Nov 21, 2024
[기술 정리] 1. 람다식(Lambda Expression)

1. 기본 문법

  1. 람다는 인터페이스로 만듭니다.
    1. 💡
      익명 함수(Anonymous Function)를 간단하게 표현할 수 있도록 합니다.
  1. 인터페이스에는 메서드가 하나만 존재해야 합니다.
  1. 메서드가 인터페이스를 매개변수로 받고 있으면 행위(behavior)를 줘야 합니다.
  1. 람다에서 매개변수에 타입을 생략 가능합니다.
  1. @FunctionalInterface 표시 가능합니다.
💡
  • @FunctionalInterface는 함수형 인터페이스를 정의할 때 사용됩니다.
  • 함수형 인터페이스는 단 하나의 추상 메서드를 가지는 인터페이스로, 람다 표현식으로 인스턴스를 생성할 수 있습니다.

2. 주요 함수형 인터페이스

(1) Consumer<T>

  • 인자를 받아 처리하고 결과를 반환하지 않는 함수
// 입력(매개 변수)만 받고 출력이 없는 연산을 수행합니다. public interface MyConsumer<T> { void accept(T data); } MyConsumer<Integer> r1 = (data) -> { System.out.println("소비할 데이터 : " + data); }; r1.accept(1); // 소비할 데이터 : 1

(2) Supplier<T>

  • 인자를 받지 않고 값을 반환하는 함수
// 입력 없이 값을 반환(return) @FunctionalInterface public interface MySupplier<T> { T get(); } MySupplier<String> r2 = () -> { return "good"; }; MySupplier<String> r3 = () -> "good"; // return 생략 가능 String msg = r3.get(); System.out.println(msg); // good

(3) Function<T, R>

  • 인자를 받아 다른 타입의 결과를 반환하는 함수
// 입력을 받아서 결과를 반환 (매개변수도 있고 반환값도 있다) public interface MyFunction<T, R> { R apply(T t); } MyFunction<String, Integer> r4 = (s) -> s.length(); Integer size = r4.apply("Lambda"); System.out.println(size); // 6

(4) Predicate<T>

  • 인자를 받아 boolean 값을 반환하는 함수
// 입력을 받아 논리값을 반환 public interface MyPredicate<T> { boolean apply(T t); } MyPredicate<String> r5 = (s) -> s.length() < 10; Boolean b = r5.apply("Lambda"); System.out.println(b); // true
 
Share article

devleekangho