animate
在上面的代码中,我可以预期List<MyObject> myList = new ArrayList<>();
//populate myList here
List<String> nameList = myList.stream()
.map(MyObject::getName)
.collect(Collectors.toList());
中MyObject
个名称的顺序始终与nameList
的顺序相同吗?
答案 0 :(得分:52)
是的,即使您使用并行流,只要您没有明确地将其转换为unordered()
模式,您就可以期待这一点。
顺序从不在顺序模式下改变,但在并行模式下可能会改变。流也变得无序:
unordered()
调用HashSet
流无序,因为订单依赖于实现,您不能依赖它)forEach()
操作或收集到无序收集器,如toSet()
)在您的情况下,这些条件均未满足,因此您的流已订购。