List<MyObject> myList = new ArrayList<>();
//populate myList here
List<String> nameList = myList.stream()
.map(MyObject::getName)
.collect(Collectors.toList());
Dans le code ci-dessus, puis-je m'attendre à ce que l'ordre des noms de MyObject
dans nameList
soit toujours le même que l'ordre de myList
?
Oui, vous pouvez vous y attendre même si vous utilisez un flux parallèle tant que vous ne l'avez pas explicitement converti en mode unordered()
.
L'ordre ne change jamais en mode séquentiel, mais peut changer en mode parallèle. Le flux devient non ordonné soit:
unordered()
callHashSet
n'est pas ordonné car l'ordre dépend de l'implémentation et vous ne pouvez pas vous y fier)forEach()
ou une collecte vers un collecteur non ordonné comme toSet()
)Dans votre cas, aucune de ces conditions n'est remplie, votre flux est donc ordonné.