JDK 8 EA 现已推出,我只是想习惯 lambda 和新的 Stream API。我尝试使用并行流对列表进行排序,但结果总是错误的:
import java.util.ArrayList;
import java.util.List;
public class Test
{
public static void main(String[] args)
{
List<String> list = new ArrayList<>();
list.add("C");
list.add("H");
list.add("A");
list.add("A");
list.add("B");
list.add("F");
list.add("");
list.parallelStream() // in parallel, not just concurrently!
.filter(s -> !s.isEmpty()) // remove empty strings
.distinct() // remove duplicates
.sorted() // sort them
.forEach(s -> System.out.println(s)); // print each item
}
}
输出:
C
F
B
H
A
请注意,每次输出都不同。我的问题是,这是一个错误吗?还是不能并行排序列表?如果是这样,那么为什么 JavaDoc 没有说明这一点?最后一个问题,是否有另一个操作,其输出会因流类型而异?