JDK 8 EAがリリースされました。ラムダと新しい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