如何用 Streams 替换 Iterables.filter() ?
2022-09-04 03:18:55
我试图从Guava迁移到Java 8 Streams,但不知道如何处理可迭代。这是我的代码,从可迭代中删除空字符串:
Iterable<String> list = Iterables.filter(
raw, // it's Iterable<String>
new Predicate<String>() {
@Override
public boolean apply(String text) {
return !text.isEmpty();
}
}
);
请注意,这是一个可迭代的
,而不是一个集合
。它可能包含无限数量的项目,我无法将其全部加载到内存中。我的 Java 8 替代方案是什么?
顺便说一句,使用Lamba,此代码看起来更短:
Iterable<String> list = Iterables.filter(
raw, item -> !item.isEmpty()
);