티스토리 뷰

개발/Java

자바 스트림 -1

Beemo_ 2020. 12. 26. 14:19

스트림?

 - 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓은 것

 - 데이터 소스가 무엇이던 간에 같은 방식으로 다를 수 있게 해줌

 - 코드의 재사용성이 높아짐

 

문자열 정렬, 출력

        String[] strings = {"data1", "data3", "data2"};
        List<String> stringList = Arrays.asList(strings);

        Arrays.sort(strings);
        Collections.sort(stringList);
        for(String string : strings) {
            System.out.println(string);
        }
        for(String string : stringList) {
            System.out.println(string);
        }
        
        Stream<String> stringStream = stringList.stream();
        Stream<String> stringStream2 = Arrays.stream(strings);

        stringStream.sorted().forEach(System.out::println);
        stringStream2.sorted().forEach(System.out::println);

스트림 특징

 - 데이터 소스를 변경하지 않음

 - 일회용

 - 내부 반복으로 처리

 

스트림 연산

 - 중간 연산 : 연산 결과(반환값)이 스트림인 연산

 - 최종 연산 : 스트림의 요소를 소모하는 연산

 

stringStream.sorted().forEach(System.out::println);

에서 sorted()는 중간 연산, forEach는 최종 연산에 해당

 

 - 중간 연산 종류

distinct() - 중복을 제거

filter() - 조건에 안 맞는 요소 제외

limit() - 스트림의 일부를 잘라냄

skip() - 스트림의 일부를 건너뜀

peek() - 스트림의 요소에 작업수행 (스트림의 중간 값을 확인하기에 좋음)

sorted() - 스트림의 요소를 정렬

map, flatMap - 스트림의 요소를 변환

 

 - 최종 연산 종류

forEach(), forEachOrdered() - 각 요소에 지정된 작업 수행

count() - 스트림의 요소의 갯수 반환

max(), min() - 스트림의 최대, 최소 값을 반환

findAny(), findFirst() - 스트림의 요소 하나를 반환(any : 아무거나 1개, first : 첫 번째 요소)

allMatch(), anyMatch(), noneMatch() - 주어진 조건을 모든 요소가 만족시키는지, 만족시키지 않는지 확인

toArray() - 스트림의 모든 요소를 배열로 반환

reduce() - 스트림의 요소를 하나씩 줄여가면서 계산

collect() - 스트림 요소를 수집, 결과를 컬렉션에 담아 반환하는데 사용

 

 - 스트림 연산은 최종 연산이 수행되기 전까지는 중간 연산을 수행하지 않는다(지연된 연산)

   - 중간 연산을 호출 해도 어떤 작업이 수행되어야 하는지를 지정할 뿐 연산을 수행하진 않는다.

'개발 > Java' 카테고리의 다른 글

Effective Java 3/E - 싱글턴을 만드는 방법  (0) 2021.01.16
Effective Java 3/E - 정적 팩터리 메서드  (0) 2021.01.14
자바 스트림 -2  (0) 2021.01.01
자바 람다식  (0) 2020.12.19
자바 객체를 생성하는 3가지 방법  (0) 2020.11.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함