JAVA Programming

Growing_HJ·2024년 6월 6일

일기장

목록 보기
23/51

2024.06.05.WED <D + 16>, Stream(스트림)
A. Stream (스트림)

  • Collection이 데이터 집합을 편리하게 사용할 수 있도록 표준화되어, Collection FW로 제공되고 있지만, 개선(코드의 재사용 => 공용 메소드의 부재) 해야 할 부분이 있음.
    A-1. Stream의 장점
  • 코드의 재사용성이 증가
  • 다양한 데이터 소스를 대상으로 동일한 방식으로 다룸

A-2. Stream의 특징
1. 스트림은 데이터 소스를 변경하지 않는다
2. 스트림은 일회용이다
-> 스트림을 생성해 사용한 후, 한 번 사용하면 닫혀서 다시 사용할 수 없다.
다시 스트림을 사용하고 싶은 경우, 스트림 재생성후에 사용하면 된다.
3. 스트림의 작업은 내부 반복으로 처리한다.

void forEach ( Consumer <? super T> action )
// forEach()의 내부 구현부에는 반복문이 존재함 (내부 반복문).

A-3. List(리스트) 로 정렬하는 경우와 Array(배열)로 정렬하는 경우 (공용 메소드의 부재)
a. Collections.sort() -> 리스트 정렬시에 사용.
b. Array.sort() -> 배열 정렬 시 사용.
==> List, Array, File는 모두 동일한 인터페이스를 제공(표준화가 잘 되어 있음)

B. Stream의 연산.
B-1. 중간 연산

  • 스트림을 처리(연산) 후, 스트림을 반환
    ++ filter()
    ++ map()

B-2. 최종 연산

  • 스트림의 요소를 소모하면서 처리(연산)을 수행. (!단 한번만 연산이 가능)
    ++ collect()
    ++ toList()

B-3. 스트림 복합 연산의 예

Stream.distinct().sorted().forEach(System.out::println)
중간 연산 => distinct().sorted() -> 메소드 체인형태가 됨. 
최종 연산 => forEach(System.out::println) 

C. 파일
C-1. Stream 대상에 대한 종류
-> Stream emptyStream = Stream.empty();
-> 빈 Stream은 null이 아님.

0개의 댓글