Có vẻ như tôi đang gặp khó khăn trong việc hiểu cách Java kết hợp các hoạt động luồng thành một đường truyền luồng.
Khi thực thi đoạn mã sau
public
static void main(String[] args) {
StringBuilder sb = new StringBuilder();
var count = Stream.of(new String[]{"1", "2", "3", "4"})
.map(sb::append)
.count();
System.out.println(count);
System.out.println(sb.toString());
}
Bảng điều khiển chỉ in 4
. Đối StringBuilder
tượng vẫn có giá trị ""
.
Khi tôi thêm thao tác lọc: filter(s -> true)
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
var count = Stream.of(new String[]{"1", "2", "3", "4"})
.filter(s -> true)
.map(sb::append)
.count();
System.out.println(count);
System.out.println(sb.toString());
}
Đầu ra thay đổi thành:
4
1234
Làm thế nào để hoạt động bộ lọc dường như dư thừa này thay đổi hành vi của đường ống tổng hợp?