스트림 API

Jan 08, 2024
스트림 API
💡
Java 8 에서 추가된 기능으로, 배열이나 컬렉션의 데이터를 간편하게 처리할 수 있다.
 

스트림의 특징

  • 원본 데이터가 변경되지 않음
  • 재사용 불가
  • 생산 - 가공 - 처리의 과정을 거침
notion image

1. 스트림 생성

 
스트림의 생성은 다음과 같다.
[배열에서 생성] String[] arr = {"kim","lee","park"}; Stream<String> s1 = Arrays.stream(arr); [컬렉션에서 생성] List<String> list = Arrays.asList("kim","lee","park"); Stream<String> s2 =list.stream();list.stream().filter().collect();
 
 

2. 필터링(filter())

 
조건에 맞는 데이터를 통과시키는 메서드이다. () 내부는 람다식으로 표현할 수 있다.
 
List<String> list = Arrays.asList("kim", "lee", "park"); Stream<String> s2 = list.stream().filter(s -> s.contains("p")); s2.forEach(System.out::println);
 
list 의 원소 중 p가 포함되어 있는 값을 필터링한다.
notion image
 
💡
.forEach(System.out::println) 는 스트림의 항목을 출력할 때 사용한다.
 

3. 매핑(map())

 
map() 메서드를 사용하여 기존의 데이터를 변셩시켜 새로운 데이터로 생성하는 연산이다.
 
List<String> list = Arrays.asList("kim", "lee", "park"); Stream<String> s2 = list.stream().map(s -> s.toUpperCase()); s2.forEach(System.out::println);Stream<String> s2 = list.stream().map(s -> s.toUpperCase());
 
모든 문자열을 대문자로 변경할 수 있다.
 
notion image
 
 

4. 처리

 
처리 단계에서는 입력 데이터들을 모아서 결과를 생성한다.
 
List<String> list = Arrays.asList("park", "kim", "lee"); List<String> s2 = list.stream().filter(s -> s.contains("p")).toList(); System.out.println(s2);
 
처리 단계를 거치면 스트림에서 컬렉션이 되기 때문에 Stream<String> 에서List<String> 으로 변경해야 한다.
 
notion image
 

연습

public class StreamExample1 { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); System.out.println(numbers); List<Integer> result = numbers.stream().filter(n -> { return n % 2 == 0; }).map(n -> { return n * n; }).toList(); System.out.println("실행결과" + result); } }
 
notion image
notion image
 
Share article

{CODE-RYU};