【发布时间】:2017-01-30 07:22:50
【问题描述】:
我正在尝试从 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();
}
}
);
注意,这是Iterable,而不是Collection。它可能包含 无限 数量的项目,我无法将其全部加载到内存中。我的 Java 8 替代方案是什么?
顺便说一句,使用 Lamba,这段代码看起来会更短:
Iterable<String> list = Iterables.filter(
raw, item -> !item.isEmpty()
);
【问题讨论】:
-
raw是什么类型? -
您使用的是哪个版本的 Guava?或者你根本不想使用 Guava?
-
@shmosel 如果可能的话,我想摆脱 Guava 并迁移到 Java 8 Streams。也许不是。这就是为什么在这里问。
-
绝对不可能将 Guava 的所有实用程序都替换为流,但您可以替换此特定功能,如我的回答所示。
标签: java java-8 java-stream guava