Đôi khi sẽ thuận tiện khi thực hiện "một cái gì đó" (ví dụ: in) với mọi phần tử trong luồng ở giữa các bước xử lý luồng, ví dụ: để gỡ lỗi.Luồng Java "forEach" nhưng không tiêu thụ luồng
Một ví dụ đơn giản có thể trông như thế này, thật không may điều này không làm việc như forEach
tiêu thụ dòng:
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
List<String> filteredList =
list.stream()
.filter(s -> s.startsWith("t"))
.forEach(System.out::println)
.collect(Collectors.toList());
Làm thế nào điều này có thể đạt được?
có thể trùng lặp của [Java 8 Lambda Suối foreach với nhiều câu] (http://stackoverflow.com/questions/31130457/java-8-lambda-stream-foreach-with-multiple-statements) –
@ DidierL Đó là bản sao không thực sự là một ví dụ tốt vì nó _mutates_ phần tử Stream bên trong hoạt động 'peek'. – Tunaki
@Tunaki Tôi đoán một trong những đột biến đó cũng sẽ phù hợp khi người ta không thực sự cần phải đột biến. Câu trả lời thực sự giống nhau. Tôi cảm thấy như tất cả những câu hỏi liên quan đến 'peek' này hầu như luôn giống nhau. –