Pemesanan tergantung pada struktur data sumber dan operasi aliran perantara. Dengan asumsi Anda menggunakan List
pemrosesan harus dipesan (karena filter
tidak akan mengubah urutan di sini).
Streaming mungkin atau mungkin tidak memiliki urutan pertemuan yang ditentukan. Apakah aliran memiliki urutan pertemuan atau tidak tergantung pada sumber dan operasi perantara. Sumber aliran tertentu (seperti Daftar atau array) secara intrinsik dipesan, sedangkan yang lain (seperti HashSet) tidak. Beberapa operasi perantara, seperti diurutkan (), dapat memaksakan urutan pertemuan pada aliran yang tidak berurutan, dan yang lain dapat membuat aliran yang dipesan tidak berurutan, seperti BaseStream.unordered (). Lebih jauh, beberapa operasi terminal mungkin mengabaikan urutan pertemuan, seperti forEach ().
Jika aliran diperintahkan, sebagian besar operasi dibatasi untuk beroperasi pada elemen dalam urutan pertemuannya; jika sumber stream adalah Daftar yang berisi [1, 2, 3], maka hasil dari mengeksekusi peta (x -> x * 2) harus [2, 4, 6]. Namun, jika sumber tidak memiliki urutan pertemuan yang ditentukan, maka permutasi nilai apa pun [2, 4, 6] akan menjadi hasil yang valid.
Untuk aliran berurutan, ada atau tidaknya urutan pertemuan tidak mempengaruhi kinerja, hanya determinisme. Jika aliran dipesan, eksekusi berulang dari pipa aliran identik pada sumber yang identik akan menghasilkan hasil yang identik; jika tidak dipesan, eksekusi berulang mungkin menghasilkan hasil yang berbeda.
Untuk aliran paralel, melonggarkan kendala pemesanan terkadang dapat memungkinkan eksekusi yang lebih efisien. Operasi agregat tertentu, seperti memfilter duplikat (berbeda ()) atau reduksi yang dikelompokkan (Collectors.groupingBy ()) dapat diimplementasikan lebih efisien jika pemesanan elemen tidak relevan. Demikian pula, operasi yang secara intrinsik terkait dengan order, seperti limit (), mungkin memerlukan buffering untuk memastikan pemesanan yang tepat, merusak manfaat paralelisme. Dalam kasus di mana streaming memiliki urutan pertemuan, tetapi pengguna tidak terlalu peduli tentang urutan pertemuan itu, secara eksplisit menghapus urutan aliran dengan unordered () dapat meningkatkan kinerja paralel untuk beberapa operasi stateful atau terminal. Namun, sebagian besar aliran pipa, seperti "jumlah bobot blok" contoh di atas,