JDK 8 EA hiện đã hết và tôi chỉ đang cố gắng làm quen với lambda và API luồng mới. Tôi đã cố gắng để sắp xếp một danh sách với dòng song song, nhưng kết quả luôn luôn là sai:java 8 parallelStream() với sắp xếp()
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
Lưu ý rằng mỗi lần ra là khác nhau. Câu hỏi của tôi là, nó là một lỗi? hoặc là không thể sắp xếp một danh sách song song? nếu có, thì tại sao JavaDoc không nói điều đó? Câu hỏi cuối cùng, có một hoạt động khác có đầu ra sẽ khác nhau tùy thuộc vào loại luồng không?
Có thể sẽ tốt hơn nếu xóa các mục trùng lặp sau khi sắp xếp. – Ingo