Những điểm mới của Java 8 (phần 2: Streams API)

Chúng ta bắt đầu bằng việc cắt nghĩa một từ tiếng Anh. Từ “stream” bạn tạm hiểu/liên tưởng đó là “dòng nước”, “dòng suối”, “luồng”. Một stream (“dòng”) là tuần tự dữ liệu hỗ trợ các thao tác tổng hợp tuần tự, cho phép xử lý song song.
Chúng ta thường sử dụng các hàm tính tổng trong SQL khá thường xuyên. Chẳng hạn tính tổng giá trị hàng bán được trong 1 tháng, gọi là doanh thu trong tháng. Hoặc lấy giá trị số lớn nhất trong chuỗi số.

Kết quả của một thao tác tổng trên stream có thể trả về kiểu dữ liệu nguyên thủy, một đối tượng hoặc không trả về kết quả (void). Với stream, chúng ta có thể tính tổng tất cả các số nguyên của một dòng các số nguyên.

Bài toán: Tính tổng bình phương các số chẵn từ 1 đến 10.
Trước Java 8, chúng ta viết code như sau:

Kết quả: sum = 2*2 + 4*4 + 6*6 + 8*8 + 10*10 = 220.

Dòng suối (stream)

Dòng suối (stream)

Với Java 8, sử dụng stream chúng ta viết như sau:

Tổng lưu lượng nước sẽ lớn hơn nếu đi theo nhiều dòng - parallel stream

Tổng lưu lượng nước sẽ lớn hơn nếu đi theo nhiều dòng – parallel stream

Để tận dụng sức mạnh của xử lý song song, chúng ta sử dụng cú pháp Java 8 với phương thức parallelStream() như sau:

SmartJob đã giới thiệu bạn ba cách để giải quyết một vấn đề. Một cách của ngày xưa, hai cách sử dụng cú pháp Java 8. Ưu điểm của streams API là cú pháp ngắn gọn hơn một chút, gần với ngôn ngữ tự nhiên hơn.

Một số ví dụ minh họa khác:

So sánh độ dài của xâu ký tự:

Đếm số nhân viên của SmartJob từ 24 tuổi trở lên

Đếm số ký tự không trùng lặp

Project để bạn tải về: Java8_stream

Đỗ Như Vý – developer tại SmartJob


java,
Java 8,
streams,