Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9에서 Stream API의 메서드를 어떻게 구현할 수 있습니까?


스트림 API 많은 내장 기능 제공 스트림 파이프라인을 사용하여 컬렉션에 대한 작업을 수행하는 데 도움이 됩니다. API는 선언적 프로그래밍 입니다. 코드가 정확하고 오류가 덜 발생합니다. 자바 9에서 , 몇 가지 유용한 메소드가 Stream API에 추가되었습니다. .

  • Stream.iterate(): 이 방법은 기존 for-loops의 스트림 버전 대체로 사용할 수 있습니다. .
  • Stream.takeWhile() :이 방법은 값을 취하는 while 루프에서 사용할 수 있습니다. 조건이 충족되는 동안.
  • Stream.dropWhile(): 이 방법은 값을 떨어뜨리는 while 루프에서 사용할 수 있습니다. 조건이 충족되는 동안.

아래 예에서 정적 메소드를 구현할 수 있습니다. iterate(), takeWhile(),dropWhile() Stream API 메소드 .

예시

import java.util.Arrays;
import java.util.Iterator;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamAPITest {
   public static void main(String args[]) {
      String[] sortedNames = {"Adithya", "Bharath", "Charan", "Dinesh", "Raja", "Ravi", "Zaheer"};

      System.out.println("[Traditional for loop] Indexes of names starting with R = ");
      for(int i = 0; i < sortedNames.length; i++) {
         if(sortedNames[i].startsWith("R")) {
            System.out.println(i);
         }
      }
      System.out.println("[Stream.iterate] Indexes of names starting with R = ");
      Stream.iterate(0, i -> i < sortedNames.length, i -> ++i).filter(i -> sortedNames[i].startsWith("R")).forEach(System.out::println);

      String namesAtoC = Arrays.stream(sortedNames).takeWhile(n -> n.charAt(0) <= 'C')
.collect(Collectors.joining(","));

      String namesDtoZ = Arrays.stream(sortedNames).dropWhile(n -> n.charAt(0) <= 'C')
.collect(Collectors.joining(","));

      System.out.println("Names A to C = " + namesAtoC);
      System.out.println("Names D to Z = " + namesDtoZ);
   }
}

출력

[Traditional for loop] Indexes of names starting with R =
4
5
[Stream.iterate] Indexes of names starting with R =
4
5
Names A to C = Adithya,Bharath,Charan
Names D to Z = Dinesh,Raja,Ravi,Zaheer