Iterables.transform没有迭代我的List

时间:2015-07-23 22:09:55

标签: java collections guava

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; 
    } 
});

1 个答案:

答案 0 :(得分:5)

Iterables州的javadoc

  

性能说明:除非另有说明,否则所有迭代   在这个类中生成的是lazy ,这意味着它们只是迭代器   在绝对必要时推进后备迭代。

换句话说,transform不适用于给定的Function。它返回Iterable,在请求元素时将应用Function