안녕하세요! 이번에는 자바의 람다식과 스트림 API에 대해 예제 코드와 함께 알아보겠습니다. 람다식은 함수형 프로그래밍을 위한 기능으로, 간결하고 효율적인 코드 작성을 가능하게 합니다. 스트림 API는 컬렉션 데이터를 처리하기 위한 기능으로, 강력하고 유연한 데이터 처리를 제공합니다. 이제 예제 코드를 통해 람다식과 스트림 API의 활용을 알아보겠습니다.
13.1 람다식의 개념
람다식은 익명 함수를 표현하는 식으로, 메서드를 하나의 식으로 표현할 수 있습니다. 간결한 코드 작성과 함수형 프로그래밍을 지원하며, 함수형 인터페이스와 함께 사용됩니다.
13.2 함수형 인터페이스
함수형 인터페이스는 하나의 추상 메서드만을 가지는 인터페이스로, 람다식의 타겟 타입으로 사용됩니다. 자바는 java.util.function 패키지에서 다양한 함수형 인터페이스를 제공합니다.
// 예제: Predicate<T> 함수형 인터페이스 사용
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class LambdaExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
numbers.add(i);
}
// 짝수를 필터링하는 Predicate
Predicate<Integer> evenPredicate = number -> number % 2 == 0;
// 짝수만 출력
numbers.stream()
.filter(evenPredicate)
.forEach(System.out::println);
}
}
13.3 람다식의 활용
람다식은 함수형 인터페이스를 구현하는 구현 객체를 생성하는데 사용됩니다. 익명 클래스를 사용하지 않고도 간결한 코드로 메서드를 구현할 수 있습니다. 람다식은 주로 함수형 인터페이스의 추상 메서드를 구현하기 위해 사용됩니다.
// 예제: Runnable 인터페이스를 람다식으로 구현하여 스레드 실행
public class LambdaExample {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
});
thread.start();
}
}
13.4 스트림 API
스트림 API는 자바 8부터 추가된 기능으로, 컬렉션 데이터를 처리하기 위한 풍부한 기능을 제공합니다. 스트림은 데이터 소스를 추상화하고 데이터를 다루는 연산을 지원합니다. 데이터 소스로부터 스트림을 생성하고, 원하는 조건에 맞게 데이터를 가공하고 처리할 수 있습니다.
13.5 스트림의 연산
스트림 API는 다양한 연산을 제공하여 데이터를 가공하고 처리할 수 있습니다. 중간 연산은 스트림을 반환하고, 최종 연산은 스트림을 소모하며 결과를 반환합니다. 스트림의 연산은 연결하여 사용할 수 있고, 체이닝을 통해 간결한 코드 작성이 가능합니다.
// 예제: 스트림 API를 사용하여 짝수의 제곱 값을 출력
import java.util.Arrays;
public class StreamExample {
public static void main(String[] args) {
Integer[] numbers = {1, 2, 3, 4, 5};
Arrays.stream(numbers)
.filter(number -> number % 2 == 0)
.map(number -> number * number)
.forEach(System.out::println);
}
}
이상으로 자바의 람다식과 스트림 API 예제 코드와 활용에 대해 알아보았습니다. 람다식과 스트림 API를 통해 코드 작성과 데이터 처리의 효율성을 높여보세요. 감사합니다!
'JAVA' 카테고리의 다른 글
JAVA | 15. 네트워킹 (0) | 2023.06.12 |
---|---|
JAVA | 14. GUI 프로그래밍 (0) | 2023.06.12 |
JAVA | 12. 제네릭 (0) | 2023.06.11 |
JAVA | 11. 컬렉션 프레임워크 (0) | 2023.06.11 |
JAVA | 10. 스레드 (0) | 2023.06.10 |
댓글