concat(Stream<? extends T> a, Stream<? extends T> b)
인풋
List<Integer> number1 = Arrays.asList(1, 2, 3, 4);
List<Integer> number2 = Arrays.asList(5, 6, 7, 8);
Static 메소드
List<Integer> newNumber = Stream
.concat(number1.stream(), number2.stream())
.collect(Collectors.toList());
아웃풋
newNumber.forEach(System.out::println);
결과
iterate(T seed, UnaryOperator f)
Static 메소드
Stream.iterate(0, n -> n + 1)
.limit(5)
.forEach(System.out::println);
결과
iterate()는 기본적으로 무한 반복이기 때문에 사용할때 limt()와 함께 주의해서 사용해야한다.
builder()
Static 메소드
Stream<String> stream = Stream.<String>builder()
.add("a")
.add("b")
.add("c")
.build();
아웃풋
List<String> list = stream.collect(Collectors.toList());
list.forEach(System.out::println);
결과
of(T t)
of(T... values)
Stream<Integer> streamOfOne = Stream.of(1);
listOfOne.forEach(System.out::println);
한번에 많은 요소의 Stream을 만들 수도 있습니다.
Stream<Integer> streamOfArray = Stream.of(1, 2, 3, 4, 5);
listOfArray.forEach(System.out::println);
empty()
Stream<String> streamEmpty = Stream.empty();
아웃풋
streamEmpty.forEach(System.out::println);
결과
이걸 어디에 쓰나요..??
List<Integer> list = Arrays.asList(1,3,5,7);
Stream<Integer> stream = list.stream()
.filter(num -> num % 2 == 0);
if (stream.count() == 0) {
stream = Stream.empty();
}
만족하는 조건의 요소가 없을 때 빈 Stream을 반환해야하는 경우가 있습니다.
generate(Supplier s)
Static 메소드
Stream<String> stream = Stream.generate(() -> "element")
.limit(5);
아웃풋
stream.forEach(System.out::println);
결과
주의사항
generate()는 기본이 무한개의 요소를 가진 Stream을 생성한다.
때문에 꼭 .limt(n)을 통해 생성하고 싶은 요소의 개수를 정해줘야한다.
(limt 처리를 해주지 않으면 sout을 찍었을 때 출력이 멈추지 않는다.)