[JAVA Stream] 4. Static 메소드

준커·2023년 5월 2일
1

JAVA 8

목록 보기
4/5
post-thumbnail

Static 메소드

1. concat()

concat(Stream<? extends T> a, Stream<? extends T> b)

정보

  • 반환값 : Stream<T>
  • 기능 : 여러개의 Stream을 1개의 Stream으로 합치는 기능.

예제 코드

  • 인풋

    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);
  • 결과

2. iterate()

iterate(T seed, UnaryOperator f)

정보

  • 반환값 : Stream<T>
  • 기능 : 조건을 적용해 무한 Stream을 만드는 기능.

예제 코드

  • Static 메소드

    Stream.iterate(0, n -> n + 1)
                    .limit(5)
                    .forEach(System.out::println);
  • 결과

  • iterate()는 기본적으로 무한 반복이기 때문에 사용할때 limt()와 함께 주의해서 사용해야한다.

Stream 생성 Static 메소드

3. builder()

정보

builder()

  • 반환값 : <R> Stream<R>
  • 기능 : Stream을 생성.

예제 코드

  • 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);
  • 결과

4. of()

정보

of(T t)
of(T... values)

  • 반환값 : <R> Stream<R>
  • 기능 : Stream을 생성.

예제 코드

  • Static 메소드
    Stream<Integer> streamOfOne = Stream.of(1);
  • 아웃풋
    listOfOne.forEach(System.out::println);
  • 결과

한번에 많은 요소의 Stream을 만들 수도 있습니다.

  • Static 메소드
    Stream<Integer> streamOfArray = Stream.of(1, 2, 3, 4, 5);
  • 아웃풋
    listOfArray.forEach(System.out::println);
  • 결과

5. empty()

정보

empty()

  • 반환값 : <R> Stream<R>
  • 기능 : 빈(공백) Stream을 생성.

예제 코드

  • Static 메소드
    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을 반환해야하는 경우가 있습니다.

6. generate()

정보

generate(Supplier s)

  • 반환값 : <R> Stream<R>
  • 기능 : Stream을 생성. (무한 요소)

예제 코드

  • Static 메소드

    Stream<String> stream = Stream.generate(() -> "element")
                                                    .limit(5);
    
  • 아웃풋

    stream.forEach(System.out::println);
  • 결과

주의사항
generate()는 기본이 무한개의 요소를 가진 Stream을 생성한다.
때문에 꼭 .limt(n)을 통해 생성하고 싶은 요소의 개수를 정해줘야한다.
(limt 처리를 해주지 않으면 sout을 찍었을 때 출력이 멈추지 않는다.)

profile
학부생일뿐

0개의 댓글