Java8의 Stream 생성방법에 대해서 알아봅니다. Stream.of(), Stream.generate(), Stream.iterate() 등을 이용하여 Stream을 다루는 방법에 대해서 알아봅니다.
스트림 생성
Stream.of()
로 생성하려는 객체를 입력하면, 스트림 객체로 생성이 됩니다.
출력은 forEach
로 내부 순환을 하여 객체들을 출력합니다. args로 출력에 사용될 함수를 넘겨줍니다.
Stream<String> stream1 = Stream.of("code", "chacha", "blog", "example");
System.out.println("stream1");
stream1.forEach(s -> System.out.println(s));
결과
stream1
code
chacha
blog
example
Stream.empty()
는 비어있는 스트림을 생성합니다.
Stream<String> stream2 = Stream.empty();
System.out.println("stream2");
stream2.forEach(s -> System.out.println(s));
결과
stream2
Stream.generate()
는 Argument로 함수를 받습니다. 함수에서 리턴되는 객체가 스트림으로 생성됩니다.
함수는 무한히 호출되기 때문에 무한한 길이의 스트림이 생성됩니다. 그렇기 때문에 limit(5)
로 5개의 객체만 생성되도록 하였습니다.
또한, System.out::println
을 함수로 넣어주면 객체들을 출력해줍니다.
Stream<String> stream3 = Stream.generate(() -> "Echo").limit(5);
System.out.println("stream3");
stream3.forEach(System.out::println);
결과
stream3
Echo
Echo
Echo
Echo
Echo
Stream.generate()
에 Math::random
을 Args로 넘겨주면 랜덤 숫자로 이어진 스트림이 생성됩니다.
Stream<Double> stream4 = Stream.generate(Math::random).limit(5);
System.out.println("stream4");
stream4.forEach(System.out::println);
결과
stream4
0.9843243270075234
0.6037447042790027
0.9375820345272727
0.8864894191532746
0.44219174822200713
Stream.iterate()
도 generate()
와 유사합니다. 하지만 args로 두개를 받습니다.
첫번째는 초기값이고, 두번째는 함수입니다. 초기값을 함수에 대입하면 0, 2, 4, 8..
로 무한한 스트림이 생성됩니다.
Stream<Integer> stream5 = Stream.iterate(0, n -> n + 2).limit(5);
System.out.println("stream5");
stream5.forEach(System.out::println);
결과
stream5
0
2
4
6
8
List로 생성된 객체도 스트림으로 생성가능합니다. list에 stream()
메소드를 List를 스트림으로 생성해줍니다.
List<String> list =
Arrays.asList("a1", "a2", "b1", "b2", "c2", "c1");
Stream<String> stream6 = list.stream();
System.out.println("stream6");
stream6.forEach(System.out::println);
결과
stream6
a1
a2
b1
b2
c2
c1
Array객체도 스트림으로 생성가능합니다.
String[] array = new String[]{"a1", "a2", "b1", "b2", "c2", "c1"};
Stream<String> stream7 = Arrays.stream(array);
System.out.println("stream7");
stream7.forEach(System.out::println);
결과
stream7
a1
a2
b1
b2
c2
c1
코드
package stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
public class StreamExample1 {
public static void main(String args[]) {
Stream<String> stream1 = Stream.of("code", "chacha", "blog", "example");
System.out.println("stream1");
stream1.forEach(s -> System.out.println(s));
Stream<String> stream2 = Stream.empty();
System.out.println("stream2");
stream2.forEach(s -> System.out.println(s));
Stream<String> stream3 = Stream.generate(() -> "Echo").limit(5);
System.out.println("stream3");
stream3.forEach(System.out::println);
Stream<Double> stream4 = Stream.generate(Math::random).limit(5);
System.out.println("stream4");
stream4.forEach(System.out::println);
Stream<Integer> stream5 = Stream.iterate(0, n -> n + 2).limit(5);
System.out.println("stream5");
stream5.forEach(System.out::println);
List<String> list =
Arrays.asList("a1", "a2", "b1", "b2", "c2", "c1");
Stream<String> stream6 = list.stream();
System.out.println("stream6");
stream6.forEach(System.out::println);
String[] array = new String[]{"a1", "a2", "b1", "b2", "c2", "c1"};
Stream<String> stream7 = Arrays.stream(array);
System.out.println("stream7");
stream7.forEach(System.out::println);
}
}
Loading script...
Related Posts
- Java - 람다식(Lambda)과 함수형 인터페이스
- Java - 직렬화(Serialize), 역직렬화(Deserialize)
- Java - do while과 while의 차이점
- Java - List empty(null) 체크, 3가지 방법
- Java - ArrayList 초기화, 4가지 방법
- Java - HashSet.addAll()
- Java - HashSet.contains()
- Java - 2차원 배열 선언, 출력 방법
- Java - 리스트 정렬, 3가지 방법
- Java - HashSet 정렬, 3가지 방법
- Java - 리스트 (List, ArrayList)
- Java - 첫 글자만 대문자로 바꾸는 방법
- Java - hashCode(), 사용하는 이유? 구현 방법?
- Java8의 Stream reduce() 사용 방법 및 예제
- Java - filter, map, flatMap 사용 방법 및 예제
- Java - 2개의 Map 합치기 (merge, putAll)
- Java - ConcurrentModificationException 원인 및 해결 방법
- JUnit - @After와 @AfterClass의 차이점
- JUnit - @Before와 @BeforeClass의 차이점
- java와 javac의 차이점
- Java - 자바(JDK) 버전 확인 방법 (터미널, cmd 명령어)
- Java - java.util.Date를 java.sql.Date로 변환
- Java - 시스템 운영체제(OS) 정보 확인
- Java - 코드 실행 시간 측정
- Java - HashSet.retainAll() 사용 방법 및 예제
- Java - ArrayList.retainAll() 사용 방법 및 예제
- Java - ArrayList를 String으로 변환
- Java - float을 int로 변환
- Java - float을 String으로 변환
- Java - String을 boolean으로 변환
- Java - XML을 JSON으로 변환
- Java - ClassNotFoundException 발생 원인 및 해결 방법
- Java - private 생성자를 사용하는 이유
- Java - non-static method cannot be referenced from a static context
- Java - NoSuchMethodError 원인 및 해결 방법