相关疑难解决方法(0)

带有sorted()的java 8 parallelStream()

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
    }
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

C
F
B
H
A
Run Code Online (Sandbox Code Playgroud)

请注意,每次输出都不同.我的问题是,这是一个错误吗?或者不可能并行排序列表?如果是这样,那么为什么JavaDoc没有声明呢?最后一个问题,还有另一个操作,其输出会根据流类型而有所不同吗?

java parallel-processing lambda java-8 java-stream

32
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

lambda ×1

parallel-processing ×1