배열 및 컬렉션 데이터를 처리하고 조작하기 위한 강력한 도구를 제공하는 API이다
함수형 프로그래밍과 람다 표현식을 활용하여 데이터를 처리하는 방법을 제공한다
하나의 통합된 방식으로 데이터를 다룰 수 있게 된다
Arrays 클래스의 stream() 메서드 또는 Stream 클래스의 of() 메서드를 사용
Stream<String> stream = Arrays.stream(arr);
Stream<String> stream = Stream.of("갑", "을", "병");
stream() 메서드를 사용
Stream<Integer> stream = list.stream();
스트림의 요소를 변환하거나 필터링하고, 새로운 스트림을 반환하는 작업을 수행한다
Stream<Integer> numbers = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> evenNumbers = numbers.filter(n -> n % 2 == 0);
Stream<String> names = Stream.of("Alice", "Bob", "Charlie");
Stream<Integer> nameLengths = names.map(name -> name.length());
Stream<String> colors = Stream.of("red", "green", "blue", "red");
Stream<String> distinctColors = colors.distinct(); // 결과: "red", "green", "blue"
Stream<Integer> numbers = Stream.of(5, 2, 4, 1, 3);
Stream<Integer> sortedNumbers = numbers.sorted(); // 결과: 1, 2, 3, 4, 5
Stream<Integer> numbers = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> limitedNumbers = numbers.limit(3); // 결과: 1, 2, 3
Stream<Integer> skippedNumbers = numbers.skip(2); // 결과: 3, 4, 5
스트림 파이프라인의 끝에 위치하며, 스트림을 종료하고 최종 결과를 생성하거나 출력하는 작업을 수행한다
Stream<String> names = Stream.of("Alice", "Bob", "Charlie");
names.forEach(System.out::println); // 각 이름을 출력
Stream<Integer> numbers = Stream.of(1, 2, 3, 4, 5);
Integer[] numberArray = numbers.toArray();
Stream<Integer> numbers = Stream.of(1, 2, 3, 4, 5);
int sum = numbers.reduce(0, (x, y) -> x + y); // 모든 숫자를 합산
Stream<String> names = Stream.of("Alice", "Bob", "Charlie");
List<String> nameList = names.collect(Collectors.toList()); // 리스트로 수집
Stream<Integer> numbers = Stream.of(3, 1, 4, 1, 5, 9, 2, 6);
int min = numbers.min(Integer::compareTo).orElse(0); // 최솟값
int max = numbers.max(Integer::compareTo).orElse(0); // 최댓값