Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào chúng ta có thể triển khai các phương thức của Stream API trong Java 9?


Luồng API cung cấp nhiều chức năng tích hợp sẵn để giúp thực hiện các thao tác trên một tập hợp bằng cách sử dụng một đường dẫn luồng. API là lập trình khai báo giúp mã chính xác và ít bị lỗi hơn. Trong Java 9 , một số phương pháp hữu ích đã được thêm vào API luồng .

  • Stream.iterate (): Phương pháp này có thể được sử dụng để thay thế phiên bản luồng cho vòng for truyền thống .
  • Stream.takeWhile () :Phương thức này có thể được sử dụng trong vòng lặp while nhận giá trị trong khi điều kiện được đáp ứng.
  • Stream.dropWhile (): Phương pháp này có thể được sử dụng trong vòng lặp while giảm giá trị trong khi điều kiện được đáp ứng.

Trong ví dụ dưới đây, chúng ta có thể triển khai các phương thức tĩnh: iterate (), takeWhile (), dropWhile () các phương thức của API luồng .

Ví dụ

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);
   }
}

Đầu ra

[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