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.
注意:
- 存在此方法主要是為了支持調試,您需要在其中查看元素流過管道中特定點的情況。
- 從Java 9開始,如果元素的數量預先已知並且在流中保持不變,則由於性能優化,將不會執行.peek()語句。可以通過命令(正式)更改元素數量(例如, .filter(x-> true)。
- 在沒有任何終端操作的情況下使用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
相關用法
- Java LongStream peek()用法及代碼示例
- Java DoubleStream peek()用法及代碼示例
- Java IntStream peek()用法及代碼示例
- Java BlockingDeque peek()用法及代碼示例
- Java Stream map()用法及代碼示例
- Java Stream empty()用法及代碼示例
- Java Stream toArray()用法及代碼示例
- Java Stream builder()用法及代碼示例
- Java Stream filter()用法及代碼示例
- Java Stream findAny()用法及代碼示例
- Java Stream findFirst()用法及代碼示例
- Java Stream flatMap()用法及代碼示例
- Java Stream flatMapToDouble()用法及代碼示例
注:本文由純淨天空篩選整理自Sahil_Bansall大神的英文原創作品 Stream peek() in Java with examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。