簡體   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