Java:Stream

aiden·2023년 11월 20일

Java

목록 보기
29/30

Stream

스트림은 자바 8부터 도입된 기능으로, 요소들의 연속적인 처리를 위해 사용한다.

스트림 관련 메서드

  • stream() : 컬렉션을 스트림으로 변환하는 메서드이다. 스트림을 이용하면 보다 간단하고 효율적인 데이터 처리가 가능하다.
    다음과 같은 방식으로 컬렉션으로부터 스트림을 생성한다.

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    Stream<Integer> stream = numbers.stream();
  • forEach() 메서드: 컬렉션의 각 요소에 대해 지정 작업을 반복 수행할 수 있는 메서드이다. 람다식이나 메서드 참조를 전달하여 사용한다.

  • filter() : 스트림에서 특정 조건을 만족하는 요소를 걸러내는 메서드로, 람다식을 전달하여 사용한다.

  • map() : 스트림의 각 요소를 특정 함수에 적용하여 새로운 요소로 매핑하는 메서드이다. 변환된 요소들로 새로운 스트림을 생성한다.

    • mapToObj() : 매핑 시 형변환이 필요한 경우 map() 대신 사용한다.
  • collect() : 스트림의 요소를 수집하여 컬렉션이나 다른 형태로 모을 수 있는 메서드이다. Collector 인터페이스를 구현한 객체를 전달하여 사용한다.

  • distinct(): 중복된 요소를 제거한 새로운 Stream을 반환한다.

  • sorted(): 요소들을 정렬한 새로운 Stream을 반환한다.




다음은 stream(), filter(), map(), forEach(), collect()를 이용한 예제이다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> evenNumbers = numbers.stream() //스트림 생성
                                   .filter(n -> n % 2 == 0) //짝수만 선택
                                   .collect(Collectors.toList()); //요소를 모아 list로 반환
System.out.println(evenNumbers); // 출력: [2, 4]

List<Integer> squaredNumbers = numbers.stream()
                                      .map(n -> n * n) //list의 각 요소를 제곱
                                      .collect(Collectors.toList());
System.out.println(squaredNumbers); // 출력: [1, 4, 9, 16, 25]

numbers.stream()
       .forEach(System.out::println); //각 요소 출력. 출력: 1 2 3 4 5

String numberString = numbers.stream()
                            .map(Object::toString)
                            .collect(Collectors.joining(", ")); ////각 요소들을 문자열로 결합
System.out.println(numberString); // 출력: 1, 2, 3, 4, 5
profile
파인애플 좋아하세요?

0개의 댓글