Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類引用

Java 有用資源

Java - 流 API 改進



流是在 Java 中引入的,以幫助開發人員從物件序列執行聚合操作。 隨著 Java 9 的釋出,添加了一些方法使流變得更好。

takeWhile(Predicate 介面) 方法

語法

default Stream<T> takeWhile(Predicate<? super T> predicate)

takeWhile 方法獲取所有值,直到謂詞返回 false。 在有序流的情況下,它返回一個包含從該流中獲取的最長字首元素的流,這些元素與給定的謂詞匹配。

示例

package com.tutorialspoint;

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      Stream.of("a","b","c","","e","f").takeWhile(s->!s.isEmpty())
         .forEach(System.out::print);		 
   } 
}

輸出

takeWhile 方法獲取所有 a、b 和 c 值,然後一旦字串為空,它就停止執行。

abc

dropWhile(Predicate 介面)

語法

default Stream<T> dropWhile(Predicate<? super T> predicate)

dropWhile 方法丟棄開頭的所有值,直到謂詞返回 true。 在有序流的情況下,它返回一個包含該流的剩餘元素的流,在丟棄與給定謂詞匹配的最長字首元素後。

示例

package com.tutorialspoint;

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      Stream.of("a","b","c","","e","f").dropWhile(s-> !s.isEmpty())
         .forEach(System.out::print);
      
      System.out.println();
      Stream.of("a","b","c","","e","","f").dropWhile(s-> !s.isEmpty())
         .forEach(System.out::print);
   } 
}

輸出

dropWhile 方法丟棄 a、b 和 c 值,然後一旦字串為空,它就獲取所有值。

ef
ef

iterate 方法

語法

static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)

iterate 方法現在具有 hasNext 謂詞作為引數,一旦 hasNext 謂詞返回 false,它就會停止迴圈。

示例

package com.tutorialspoint;

import java.util.stream.IntStream;

public class Tester {
   public static void main(String[] args) {
      IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println);
   } 
}

輸出

3
6
9

ofNullable

語法

static <T> Stream<T> ofNullable(T t)

ofNullable 方法用於防止 NullPointerExceptions 並避免對流進行空檢查。 此方法返回一個包含單個元素的順序流(如果非空),否則返回一個空流。

示例

package com.tutorialspoint;

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      long count = Stream.ofNullable(100).count();
      System.out.println(count);
  
      count = Stream.ofNullable(null).count();
      System.out.println(count);
   } 
}

輸出

1
0
廣告