java 8 parallelStream() with sorted()
2022-09-01 05:08:57
						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没有说明这一点?最后一个问题,是否有另一个操作的输出会因流类型而异?
 
					 
				 
				    		 
				    		 
				    		 
				    		