List<MyObject> myList = new ArrayList<>();
//populate myList here
List<String> nameList = myList.stream()
.map(MyObject::getName)
.collect(Collectors.toList());
上記のコードでは、MyObject
のnameList
名の順序は、常にmyList
の順序と同じであると期待できますか?
はい、パラレルストリームを使用している場合でも、明示的に unordered()
モードに変換しない限り、これを期待できます。
順序はシーケンシャルモードでは変更されませんが、パラレルモードでは変更される場合があります。ストリームは次のいずれかになります:
unordered()
呼び出しで明示的に非順序モードにした場合HashSet
ストリームは順序付けが実装依存であり、信頼できないため、ストリームは順序付けられていません)forEach()
操作またはtoSet()
などの順序付けされていないコレクターへの収集)あなたの場合、これらの条件はどれも満たされていないため、ストリームは順序付けられています。