yeg*_*256 10 java guava java-8 java-stream
我正在尝试从Guava迁移到Java 8 Streams,但无法弄清楚如何处理iterables.这是我的代码,从iterable中删除空字符串:
Iterable<String> list = Iterables.filter(
raw, // it's Iterable<String>
new Predicate<String>() {
@Override
public boolean apply(String text) {
return !text.isEmpty();
}
}
);
Run Code Online (Sandbox Code Playgroud)
注意,这是一个Iterable,而不是一个Collection.它可能包含无限量的项目,我无法将其全部加载到内存中.什么是我的Java 8替代品?
顺便说一下,使用Lamba,这段代码看起来会更短:
Iterable<String> list = Iterables.filter(
raw, item -> !item.isEmpty()
);
Run Code Online (Sandbox Code Playgroud)
您可以Iterable使用Stream.iterator()以下方法实现功能接口:
Iterable<String> list = () -> StreamSupport.stream(raw.spliterator(), false)
.filter(text -> !text.isEmpty())
.iterator();
Run Code Online (Sandbox Code Playgroud)