假設您想要構建一個對象的副本,但會過濾掉一些原始條目。實現的一個方法如下:Google Collections(Guava Libraries):ImmutableSet/List/Map and Filtering
ImmutableList.copyOf(Iterables.filter(myObject, myObject.EQUALS));
其中myObject.EQUALS
是爲Iterables.filter()
操作的謂詞。我認爲這是一個非常優雅和易於閱讀的實現。然而,一個建立兩個列表對象(首先通過Iterables.filter(...)
調用,第二個通過ImmutableList.copyOf(...)
),這非常低效。
有人知道更有效的方法嗎?
我想最好的辦法是將過濾器謂詞添加到構建器中,以便該對象只能構建一次。但不幸的是,沒有這樣的參數。
也許你可以使用Predicates.equalTo()而不是實現它:) – 2011-06-09 14:50:57
謝謝你的提示;-) – danbim 2011-06-27 12:43:02