stream() 예제

현재·2024년 1월 18일

stream() 예제(Arrays, stream())

import java.util.Arrays;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        String[] array = {"Java", "Python", "C++"};

        // 배열을 스트림으로 변환
        Stream<String> stream = Arrays.stream(array);

        // 스트림을 이용한 각 요소 출력
        stream.forEach(System.out::println);
    }
}

stream() 예제2(ArrayList, stream())

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Python");

        // 리스트를 스트림으로 변환
        Stream<String> stream = list.stream();

        // 스트림을 이용한 각 요소 출력
        stream.forEach(System.out::println);
    }
}

스트림 생성 방법

  • 스트림은 인터페이스로서, 자바에서 스트림을 다루기 위한 핵심적인 개념 중 하나.

  • 데이터를 다루는데 사용되는 일련의 요소들의 연속적인 흐름을 나타낸다.

  • 주로 컬렉션, 배열 또는 I/O 자원 등에서 데이터를 다룰 때 사용

  • 컬렉션에서 스트림 생성:
    - 대부분의 컬렉션 클래스는 stream메서드를 제공하여 스트림을 생성할 수 있다.

List<String> list = Arrays.asList("Java", "Python", "C++");
Stream<String> stream = list.stream();
  • 배열에서 스트림 생성:
    - Arrays 클래스에서 제공하는 stream메서드를 사용하여 배열을 스트림으로 변환할 수 있다.
String[] array = {"Java", "Python", "C++"};
Stream<String> stream = Arrays.stream(array);
  • 값으로 직접 스트림 생성
    - Stream 인터페이스에서 제공하는 of 메서드를 사용하여 직접 스트림 생성할 수 있다.
Stream<String> stream = Stream.of("Java", "Python", "C++");
  • 파일이나 네트워크 연결 등 I/O에서 스트림 생성
    - java.nio.file.Files클래스 등을 사용하여 파일에서 스트림을 생성할 수 있다.
Stream<String> lines = Files.lines(Paths.get("파일 경로"));

stream의 filter 이용 예제

import java.util.Arrays;

class Solution {
    public int[] solution(int n, int[] numList) {
        // 1. Arrays.stream(numList): numList 배열을 스트림으로 변환
        // 2. filter(value -> value % n == 0): n으로 나누어 떨어지는 요소만 필터링
        // 3. toArray(): 스트림의 결과를 배열로 변환
        return Arrays.stream(numList).filter(value -> value % n == 0).toArray();
    }
}
  • value: 스트림의 각 요소
  • ->: 람다 표현식의 구분자
  • value % n == 0: 조건식으로, 현재 요소를 n으로 나누었을 때 나머지가 0인지를 확인하는 조건
  • filter 메서드는 스트림의 각 요소를 받아서, 해당 요소를 n으로 나누었을 때 나머지가 0인 경우만을 선택하게 된다.

0개의 댓글