List<MyObject> myList = new ArrayList<>();
//populate myList here
List<String> nameList = myList.stream()
.map(MyObject::getName)
.collect(Collectors.toList());
Dalam kode di atas, dapatkah saya mengharapkan urutan MyObject
nama-nama di nameList
selalu sama dengan urutan myList
?
Ya, Anda dapat mengharapkan ini bahkan jika Anda menggunakan aliran paralel selama Anda tidak secara eksplisit mengubahnya menjadi unordered()
mode.
Urutan tidak pernah berubah dalam mode sekuensial, tetapi dapat berubah dalam mode paralel. Aliran menjadi tidak teratur baik:
- Jika Anda secara eksplisit mengubahnya menjadi mode unordered via
unordered()
panggilan
- Jika sumber aliran melaporkan bahwa itu tidak berurutan (misalnya,
HashSet
streaming tidak teratur karena pesanan bergantung pada implementasi dan Anda tidak dapat mengandalkannya)
- Jika Anda menggunakan operasi terminal tanpa nomor (misalnya,
forEach()
operasi atau pengumpulan ke kolektor tak teratur seperti toSet()
)
Dalam kasus Anda, tidak ada satu pun ketentuan ini yang dipenuhi, sehingga aliran Anda dipesan.