Stream lazy evaluation

Mình có tìm hiểu về stream lazy evaluation và gặp vấn đề như thế này. Theo mình hiểu là các intermediate operations tạo ra các Stream mới. Vậy như hình ở dưới thì khi terminal operation gọi các Stream thực hiện các operation, vậy cho mình hỏi Stream 1 sau khi thực hiện rồi nó sẽ chuyển sang Stream 2 thế nào, mà Stream 2 là 1 Stream mới được tạo từ bước intermediate operation 2 rồi thì nó sẽ được xử lí ra sao?? Thanks in advance!!

Các Stream là các object thôi.
Đang lập trình hướng đối tượng (OOP) nên các khái niệm Stream, Pipeline, Sink đều là mô hình hoá từ các vật thể trong cuộc sống thực thôi.
Nên các Stream sau sẽ tạo ra dạng wrapper, (composition hoặc inheritance), để chuẩn bị cho các element trong pipeline (stream) đó. Chưa thực sự duyệt qua (iterate) các element đó.

Khi các terminal operations được gọi, sẽ trigger các methods và evaluate kết quả các stream theo thứ tự pipeline. Lúc này mới là lúc pipeline duyệt (iterate) qua các elements; cái nào accepts được sẽ consume/reduce về kết quả Sink tương ứng, lại tiếp cho Pipeline (stream) kế tiếp, cho tới cái cuối và ra kết quả cuối cùng được Evaluated.

(Cái này chắc trong bài gốc tiếng Anh đã có mô tả, nếu vẫn chưa hiểu bạn chịu khó đọc và nghiền ngẫm tiếp vậy)

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?