analyticsDatabases的类型为
private final Iterable<Database> analyticsDatabases;
我在方法中使用下面的代码片段,并且我在analyticsDatabases List中有一个元素。当我做一个for循环时,一切正常,但我很好奇为什么我的Iterables.transform不起作用。
Iterable<Iterable<ObjectId>> finalR = Iterables.transform(analyticsDatabases, new Function<Database, Iterable<ObjectId>>() {
@Nullable
@Override
public Iterable<ObjectId> apply(@Nullable Database database) {
if (database != null) {
return database.deleteItemsById(filterIds, storableType, writeAckStrategy);
}
`enter code here`
return null;
}
});
答案 0 :(得分:5)
Iterables
州的javadoc
性能说明:除非另有说明,否则所有迭代 在这个类中生成的是lazy ,这意味着它们只是迭代器 在绝对必要时推进后备迭代。
换句话说,transform
不适用于给定的Function
。它返回Iterable
,在请求元素时将应用Function
。