的使用我有一个叫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'并打印出来。 –