官网:http://fg.sjdsgw.com
Java 8特性之- forEach() vs forEachOrdered()
本章将介绍forEach()和forEachOrdered()方法以及如何使用parallel()方法处理流。
1. forEach()
Stream#forEach(Consumer<? super T> action)
此方法对流的每个元素执行一个操作。对于并行流,它不能保证维持流的顺序。
2. forEachOrdered()
Stream#forEachOrdered(Consumer<? super T> action)
此方法方法对该流的每个元素执行一个操作,确保对具有已定义的相遇顺序的流按相遇顺序处理每个元素。
e.g
package org.cfj.stream;
/**
* 比较forEach和forEachOrdered
*/
public class forEachAndforEachOrderd {
public static void main(String[] args) {
String str="NB&NB-IoT&Lora";
System.out.println("------foreach---------");
str.chars().forEach(p->System.out.print((char) p));
//输出的顺序:NB&NB-IoT&Lora
System.out.println("\n--------------");
str.chars().forEachOrdered(p->System.out.print((char)p));
//输出的顺序:NB&NB-IoT&LoraNB&NB-IoT&Lora
System.out.println("\n-----------使用并行流parallel---------------");
str.chars().parallel().forEach(p->System.out.print((char) p));
//输出的顺序:T&oorNL&BaB-IN
System.out.println("\n--------------");
str.chars().parallel().forEachOrdered(p->System.out.print((char)p));
//输出的顺序:NB&NB-IoT&Lora
}
}