JDK 8 EA現在不在了,我只是想習慣lambda和新的Stream API。我試圖用排序並行流的列表,但結果始終是錯誤的:java 8 parallelStream()with sorted()
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
}
}
OUTPUT:
C
F
B
H
A
注意,每次輸出是不同的。我的問題是,這是一個錯誤?還是不可能並行排序列表?如果是這樣,那爲什麼JavaDoc沒有聲明?最後一個問題,是否有另一個操作的輸出根據流類型而有所不同?
排序後刪除重複可能會更好。 – Ingo