Một vài chức năng của Stream
- Filter từ dataset
- Sort
- Một số kiểu biến đổi object hoặc các method như sum, coalesce, limit
Có vài class stream cho các kiểu dữ liệu nguyên thuỷ: intstream, longstream, doublestream
Các method static
- empty
- of
- ofNullable
- generate (Lưu ý có thể tạo stream vô hạn nếu dùng không đúng logic)
- iterate: kiểu như for kèm điều kiện để tạo stream
- concat: return stream mới mà nối 2 stream lại
- builder: Tạo builder tạo stream với tuỳ chọn element nào sẽ thêm vào



Các thao tác với stream, đại khái chỉ có kết quả khi gọi terminal operation, các thao tác trung gian sẽ không xử lý data luôn

Các terminal method của stream

Mọi thao tác sử dụng stream sau khi terminal method được gọi sẽ có IllegalStateException.
Các method trung gian (Intermediate operations)
- stateless: như filter và map, không có liên hệ giữa các element với nhau
- stateful: như distinct và sorted, có liên hệ giữa các element

Một số functional interface dùng với method trong Stream


Một số note về Stream
- sau khi build(), nếu gọi lại method của builder sẽ IllegalStateException
- Phải chỉ định kiểu generic khi tạo stream, nếu không chỉ định, khi khai báo Stream builder và dùng method sẽ có lỗi ClassCastException
- Phải assign lại variable stream khi method có return stream (intermediate operation), bằng không sẽ có lỗi khi runtime tới method tiếp theo dùng stream, tương tự khi merge, merge xong sẽ không dùng được variable stream cũ nữa mà phải dùng variable sau khi merge.