我們如何實現 Java 9 中的 Stream API 方法?
Stream API 提供了許多內建功能來幫助使用流管道執行集合上的操作。該 API 為宣告性程式設計,它使程式碼準確且減少錯誤。在Java 9中,已添加了一些有用的方法到Stream API中。
- Stream.iterate(): 此方法可用作傳統 for 迴圈的流版本替換。
- Stream.takeWhile(): 此方法可用於 while 迴圈中,在滿足條件時該迴圈獲取值。
- Stream.dropWhile(): 此方法可用於 while 迴圈中,在滿足條件時該迴圈刪除值。
在以下示例中,我們可以實現以下靜態方法:Stream API 的iterate()、takeWhile() 和 dropWhile() 方法。
示例
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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP