Java stream map and collect - order of resulting container
27,425
Yes, you can expect this even if you are using parallel stream as long as you did not explicitly convert it into unordered()
mode.
The ordering never changes in sequential mode, but may change in parallel mode. The stream becomes unordered either:
- If you explicitly turn it into unordered mode via
unordered()
call - If the stream source reports that it's unordered (for example,
HashSet
stream is unordered as order is implementation dependent and you cannot rely on it) - If you are using unordered terminal operation (for example,
forEach()
operation or collecting to unordered collector liketoSet()
)
In your case none of these conditions met, thus your stream is ordered.
Comments
-
Lahiru Chandima almost 2 years
List<MyObject> myList = new ArrayList<>(); //populate myList here List<String> nameList = myList.stream() .map(MyObject::getName) .collect(Collectors.toList());
In above code, can I expect that order of
MyObject
names innameList
is always the same as the order ofmyList
?