【发布时间】:2016-09-01 07:30:39
【问题描述】:
在通过并行流和收集器过滤 Guava 的 ImmutableTable 时需要帮助
过滤表不可变;
用例:遍历 toFilter 并删除 validEntry 表中不存在或条目值为 false 的元素。 通过 for 循环执行此操作的传统方式:
ImmutableTable<MarketplaceArc, String, ObjectB> filterInactive(final ImmutableTable<MarketplaceArc, String, ObjectB> toFilter) {
final ImmutableTable.Builder filteredResultBuilder =
ImmutableTable.builder();
final Map<MarketplaceArc, Map<String, ObjectB>> rowMap =
browseMappings.rowMap();
for (final Map.Entry<MarketplaceArc, Map<String, ObjectB>>
rowMapEntry : rowMap.entrySet()) {
for (final Map.Entry<String, ObjectB> entry :
rowMapEntry.getValue().entrySet()) {
if(ifActive(rowMap.getKey, entry)){
filteredResultBuilder.put(
rowMapEntry.getKey(),
entry.getKey(),
buildObjectB(entry));
}
}
}
return filteredResultBuilder.build();
}
有没有更好更简洁的方法通过 Java parallelStreams 做到这一点?
【问题讨论】:
-
解决您的问题...您的示例看起来甚至没有经过编译(
Immutable不是 Guava 类型,ImmutableTable是;ImmutableTable不占用字段 名称但对象类型)。我们不使用伪代码,而是使用真实代码。因此,请创建一个 MCVE 并填写您所拥有的内容,并准确告诉我们您的期望,以便我们为您提供帮助。 -
已修复。我正在寻找一些指针。
标签: java java-8 guava java-stream collect