java 8 parallelStream() avec triés()

JDK 8 EA est maintenant, et je suis juste essayer d'obtenir utilisé pour le lambda et le nouveau Flux de données de l'API. J'ai essayé de trier une liste avec courant parallèle, mais le résultat est toujours faux:

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
    }
}

De SORTIE:

C
F
B
H
A

Remarque que chaque fois que le résultat est différent. Mes questions: est-ce un bug? ou n'est-il pas possible de trier une liste en parallèle? si oui, alors pourquoi la JavaDoc n'est pas l'état qui? Dernière question, est-il une autre opération dont le résultat serait différent en fonction du type de flux?

  • Il serait probablement préférable de supprimer les doublons après le tri.
InformationsquelleAutor Eng.Fouad | 2013-10-22