프로그래밍 언어/JAVA

JAVA - 스트림 생성하기

딤섬뮨 2022. 10. 6. 12:09
728x90

클린코드를 진행하면서 가장 생소하지만 가장 많이 쓰고 있는 문법인 스트림에 대해서 정리해볼까 한다.

 

1. 생성하기

-배열,컬렉션,빈 스트림

- Stream.builder(),stream.generate(),stream.iterate()

-기본 타입형 String 파일 스트림

- 병렬 스트림 , 스트림 연결하기

 

스트림은 데이터의 흐름입니다.

배열 또는 컬렉션 인스턴스에 함수 여러개를 조합하여 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있습니다.

람다를 이용하여 코드의 양을 줄이고 간결하게 표현할 수 있습니다.

즉 배열과 컬렉션을 함수형으로 처리할 수 있습니다.

 

배열 스트림

String arr = new String[]{"1","2"};
Stream<String> stream = Arrays.stream(arr);

 

컬렉션 스트림

 

컬렉션타입(Collection,List,Set)의경우 인터페이스에 추가된 디폴트 .stream()을 이용하여 만듭니다.

 

Stream.builder()

 

빌더를 사용하면 원하는 값을 넣을 수 있습니다.

Stream<String> builderStream = Stream.<String>builer().add("1").build();

 

Stream.generate()

 

generate메소드를 사용하면 Supplier<T>에 해당하는 람다로 값을 넣을 수 있습니다.

Supplier<T>는 인자는 없고 리턴값만 있는 함수형 인터페이스이다.

람다에서 리턴하는 값이 들어감.

 

Stream<String> generatedStream = Stream.generate(() -> "gen").limit(5);

5개의 gen이들어간 스트림이 생성됩니다.

 

Stream.iterate()

 

iterate메소드를 이용하면 초기 값과 해당 값을 다루는 람다를 이용해서 스트림에 들어갈 요소를 만듭니다.

다음 예제에서는 30이 초기 값이고 값이 2씩 증가하는 값들이 들어가게 됩니다.

 

Stream<Integer> iteratedStream = Stream.iterate(30,n -> n +2).limit(5);
//[30,32,34,36,38]

 

문자열 스트림

 

스트링을 이용해서 스트림을 생성할 수 있음.

스트링의 각 문자(char)를 Instream으로 변환하는 예제이다.

InStream charStream = "Stream".chars();
//[83,116,113,101,97,109]

 

정규 표현식을 이용해서 문자열을 자르고 각 요소들을 스트림으로 만들기

 

Stream<String> stringStream = Pattern.compile(",").splitAsStream("Eric,ELena,java");

//[Eric,Elena,java]

 

 

728x90