Stream 이해하기

먹어보고·2024년 5월 10일
0

Stream API
원본의 데이터를 변경하지 않고 작업을 처리할 수 있는 API.

기존 JAVA는 객체 지향 언어이기에 함수형 프로그래밍을 지원하지 않았다.
JDK8 부터 Stream API, 람다 등을 지원해 함수형 프로그래밍을 지원한다.

Stream API의 특징
원본의 데이터 변경 X -> 원본의 데이터를 읽어와 별도의 Stream 생성
일회용 -> 한번 사용 후 재사용 불가 (다시 사용시 Exception 발생)
내부 반복 작업 처리 -> 반복문을 내장하여 기존 반복문의 코드 필요 X

Stream 연산
생성
1. Colletion 타입의 Stream 생성

List<String> list = Arrays.asList("a","b","c");
Stream<String> listStream = list.stream();
  1. 배열의 Stream 생성
Stream<String> stream = Stream.of("a","b","c");
  1. 원시 Stream 생성
    int, long, double 과 같은 원시 자료형
IntStream stream = IntStream.range(4,10);

Stream 가공(중간연산)
Filter

List<String> names = new ArrayList<>();
        names.add("abc");
        names.add("acc");
        names.add("bbc");
        List<String> nameList = names.stream().filter(name-> name.contains("a")).collect(Collectors.toList());
        nameList.forEach(System.out::println);

Map

List<String> upperNames = names.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
        upperNames.forEach(System.out::println);

Sorted

List<String> sortedNames = names.stream().sorted().collect(Collectors.toList());
        sortedNames.forEach(System.out::println);

Distinct

List<String> distinctNames = names.stream().distinct().collect(Collectors.toList());
        distinctNames.forEach(System.out::println);

Peek -> Stream에 영향을 주지 않고 확인하는 함수
출력 또는 확인용

0개의 댓글