JDK 8 EA è ora disponibile e sto solo cercando di abituarmi al lambda e alla nuova API Stream. Ho cercato di ordinare un elenco con flusso parallelo, ma il risultato è sempre sbagliato:java 8 parallelStream() con ordinato()
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
}
}
USCITA:
C
F
B
H
A
Nota che ogni volta che l'uscita è diverso. Le mie domande sono, è un bug? o non è possibile ordinare una lista in parallelo? se è così, allora perché il JavaDoc non lo dice? Ultima domanda, c'è un'altra operazione il cui output sarebbe diverso a seconda del tipo di stream?
Probabilmente sarebbe meglio rimuovere i duplicati dopo l'ordinamento. – Ingo