JAVA

Java 스트림(Stream)과 람다(Lambda) 완벽 가이드: 초보자를 위한 쉬운 설명과 활용법

CodeCaine Explorer 2024. 12. 20. 13:42
728x90
반응형
SMALL

안녕하세요! 😊

오늘은 Java의 스트림(Stream)람다(Lambda) 표현식에 대해 이야기해볼게요.
이 두 가지를 활용하면 코드가 짧아지고, 직관적이면서도 강력한 기능을 구현할 수 있답니다.
초보 개발자분들도 쉽게 따라 할 수 있도록 간단한 예제와 용어 설명을 준비했어요. 함께 시작해볼까요? 🚀


🌟 스트림(Stream)이란?

스트림은 Java 8에서 도입된 기능으로, 데이터 컬렉션(리스트, 배열 등)을 처리하는 방법이에요.
데이터를 필터링, 변환, 집계할 때 유용하며, 데이터 흐름을 다룬다고 생각하시면 됩니다.

💡 특징

  1. 데이터 원본을 변경하지 않아요.
  2. 선언적 스타일을 사용해 가독성이 좋아요.
  3. 내부 반복을 사용해 병렬 처리에도 강력해요.


🌟 람다(Lambda)란?

람다는 익명 함수를 나타내는 Java 표현식이에요.
한 줄의 간단한 코드를 작성해 함수형 프로그래밍 스타일을 구현할 수 있답니다.

💡 문법
(매개변수) -> { 실행 코드 }

예를 들어, 숫자 리스트를 순회하며 각 숫자를 출력한다고 하면:

numbers.forEach(n -> System.out.println(n));

🌈 스트림과 람다를 함께 사용해볼까요?

예제 1: 리스트의 짝수 필터링

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);

        // 짝수만 필터링
        List<Integer> evenNumbers = numbers.stream()
                                           .filter(n -> n % 2 == 0) // 조건에 맞는 요소만 필터링
                                           .collect(Collectors.toList());

        System.out.println(evenNumbers); // 출력: [2, 4, 6]
    }
}

용어 설명:

  • filter(): 조건에 맞는 데이터만 선택.
  • collect(): 스트림의 데이터를 특정 컬렉션(List 등)으로 변환.

예제 2: 문자열 리스트 정렬 후 출력

import java.util.Arrays;
import java.util.List;

public class StreamSortingExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        // 알파벳 순으로 정렬
        names.stream()
             .sorted()
             .forEach(System.out::println); // 출력: Alice, Bob, Charlie
    }
}

용어 설명:

  • sorted(): 스트림 데이터를 정렬.
  • forEach(): 각 요소를 반복 처리.

🏆 스트림과 람다의 장점

  • 간결한 코드: 복잡한 루프와 조건문을 줄일 수 있어요.
  • 가독성 향상: 선언적 코드는 읽고 이해하기 쉬워요.
  • 병렬 처리 지원: 대량 데이터 처리 성능이 향상돼요.

초보 개발자 여러분께 😊

스트림과 람다를 처음 배울 때는 낯설고 복잡해 보일 수 있어요.
하지만, 몇 번만 연습해도 훨씬 효율적인 코드를 작성할 수 있다는 즐거움을 느끼실 거예요!
작은 코드부터 시작해서 익숙해지세요. 여러분을 응원합니다! 💪

반응형
SMALL