當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Stream peek()用法及代碼示例


Stream peek(Consumer action)返回由該流的元素組成的流,並在從結果流中消耗元素時對每個元素執行附加的操作。這是一個中間操作,即它創建了一個新的流,該流在遍曆時將包含與給定謂詞匹配的初始流的元素。

用法:

Stream<T> peek(Consumer<? super T> action)

Where, Stream is an interface and T is the type of 
stream elements. action is a non-interfering action
to perform on the elements as they are consumed 
from the stream and the function returns the new stream.

注意:


  1. 存在此方法主要是為了支持調試,您需要在其中查看元素流過管道中特定點的情況。
  2. 從Java 9開始,如果元素的數量預先已知並且在流中保持不變,則由於性能優化,將不會執行.peek()語句。可以通過命令(正式)更改元素數量(例如, .filter(x-> true)。
  3. 在沒有任何終端操作的情況下使用peek不會執行任何操作。

示例1:無需終端操作即可查看。

// Implementation of Stream.peek() 
// in Java 8 
import java.util.*; 
  
class GFG { 
  
    // Driver code 
    public static void main(String[] args) 
    { 
  
        // Creating a list of Integers 
        List<Integer> list = Arrays.asList(0, 2, 4, 6, 8, 10); 
  
        // Using peek without any terminal 
        // operation does nothing. Hence this 
        // code will produce no output. 
        list.stream().peek(System.out::println); 
    } 
}

輸出:

No Output

示例2:查看終端操作計數。

// Implementation of Stream.peek() 
// in Java 8 
import java.util.*; 
  
class GFG { 
  
    // Driver code 
    public static void main(String[] args) 
    { 
  
        // Creating a list of Integers 
        List<Integer> list = Arrays.asList(0, 2, 4, 6, 8, 10); 
  
        // Using peek with count(), which 
        // is a terminal operation 
        list.stream().peek(System.out::println).count(); 
    } 
}

輸出:

0
2
4
6
8
10


相關用法


注:本文由純淨天空篩選整理自Sahil_Bansall大神的英文原創作品 Stream peek() in Java with examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。