관리 메뉴

KorSA

JAVA 스트림 본문

Knowledge Wiki/Java

JAVA 스트림

Praiv. 2021. 12. 2. 12:40
320x100

14. 스트림
    다양한 데이터 소스(컬렉션, 배열)를 표준화된 방법으로 다루기 위한 것
    Collections Framework의 사용방법이 드디어 통일됨
    JDK 1.8에 나옴

15. Collection을 Stream으로 변환할 수 있음

Stream<Integer> intStream = list.stream();


16. 스트림 사용법
    1) 스트림 만들기
    2) 중간 연산을 n번 수행하기
    3) 최종 연산 1번해서 결과 얻기


17. 스트림의 특징
    1) 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다.
    2) 스트림은 Iterator처럼 일회용이다.(필요하면 다시 스트림을 생성해야 함)
    3) 스트림은 최종 연산 전까지 중간연산이 수행되지 않는다. (지연된 연산)

        지연된 연산이기 때문에 무한 스트림도 사용할 수 있다.

IntStream intStream = new Random().ints(1,46); // 무한 스트림.. 랜덤값을 무한히 내보낸다.
intStream.distinct().limit(6).sorted() // 중간연산
	.forEach(i->System.out.print(i+",")); // 최종연산


    4) 스트림은 작업을 병렬로 처리할 수 있다. (병렬 스트림)
        함수형 프로그래밍은 빅데이터 분야에서 큰 작업들을 빨리 처리할 수 있어서 인기가 있다.

int sum = strStream.parallel()
		.mapToInt(s -> s.length()).sum(); // 모든 문자열의 길이의 합


    5) 기본형 스트림을 제공한다.
       IntStream, LongStream, DoubleStream
       오토박싱&언박싱의 비효율이 제거됨 (Stream<Integer> 대신 IntStream 사용)
       숫자와 관련된 유용한 메서드를 Stream<T>보다 더 많이 제공

728x90
728x90
Comments