繁体   English   中英

Guava Collections2.transform不起作用

[英]Guava Collections2.transform not work

我在调试器中启动以下代码:

List<MyBean> target = getMyBeans();
Collections2.transform(target, new Function<MyBean, MyBean>() { //BREAKPOINT: target.length equals 4
     @Nullable
     @Override
     public MyBean apply(@Nullable MyBean bean) {
          return removeUnnecessaryProperties(bean); //BREAKPOINT: never invoked
     }
});

问题:尽管target有4个元素,但从不调用Collections2.transform

问题:为什么从不调用Collections2.transform

transform返回一个新Collection ,仅在需要时才转换基础collection中的元素。 因此,例如,当您迭代返回的Collection ,将对target每个元素调用一次Function

从您的代码来看,您真正想做的事情要简单得多(假设removeUnnecessaryProperties返回与传递给它的对象相同的对象):

for (MyBean bean : target) {
  removeUnnecessaryProperties(bean);
}

Collections2.transform是一个惰性操作。

该文件说:

返回的集合是fromCollection的实时视图; 改变一个会影响另一个。

为此,每个元素在访问时都必须进行转换。

尝试使用转换后的集合,例如遍历它-然后您将看到转换方法被调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM