的使用我有一個叫Data
類,只有一個方法:爪哇 - 基本流的forEach
public boolean isValid()
我有Data
的List
,我想通過Java 8個流通過他們循環。我需要計算此List
中有多少個valid
Data
對象,並只打印出valid
條目。
以下是我得到了多少,但我不明白如何。
List<Data> ar = new ArrayList<>();
...
// ar is now full of Data objects.
...
int count = ar.stream()
.filter(Data::isValid)
.forEach(System.out::println)
.count(); // Compiler error, forEach() does not return type stream.
我的第二次嘗試:(可怕的代碼)
List<Data> ar = new ArrayList<>();
...
// Must be final or compiler error will happen via inner class.
final AtomicInteger counter = new AtomicInteger();
ar.stream()
.filter(Data:isValid)
.forEach(d ->
{
System.out.println(d);
counter.incrementAndGet();
};
System.out.printf("There are %d/%d valid Data objects.%n", counter.get(), ar.size());
是'peek'或'收集'到一個'List',得到它的'size'並打印出來。 –