Stream khiến mã trông gọn gàng ngay cả khi nó khó hiểu — và đó là cái bẫy
Ba cách viết cùng một phép tính, tách chuỗi không tốn thêm lần duyệt, và bốn dấu hiệu cho biết bạn nên quay về vòng lặp.
Ba cách viết cùng một phép tính, tách chuỗi không tốn thêm lần duyệt, và bốn dấu hiệu cho biết bạn nên quay về vòng lặp.
Vì sao một chuỗi Stream không chạy gì cho tới phép cuối, từng phần tử đi hết chuỗi rồi mới tới phần tử sau, và thứ tự phép quyết định số lần tính toán.
Bốn dạng method reference, chỗ tham số lặng lẽ trở thành this, trường hợp javac báo ambiguous, và khi nào rút gọn lại làm mã khó đọc hơn chứ không dễ hơn.
Function, Supplier, Consumer, Predicate cùng cách ghép chúng lại, và số đo cho thấy dùng nhầm biến thể (Function<Integer,Integer> thay vì IntUnaryOperator) làm chậm 3,4 lần vì đóng hộp.
Lambda biên dịch thành invokedynamic cộng một phương thức private, bắt biến cục bộ là chụp một bản sao (nên phải effectively final) còn đọc trường là mở đường dây tới đối tượng, và this trong lambda khác this trong lớp ẩn danh.