클린코드를 진행하면서 가장 생소하지만 가장 많이 쓰고 있는 문법인 스트림에 대해서 정리해볼까 한다.
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]
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] immutable 객체?방어적 복사? (1) | 2022.11.15 |
---|---|
JAVA - 스트림 가공하기 (0) | 2022.10.06 |
객체 간 협력 - 기본 클래스 구현 (0) | 2021.04.11 |