[英]How can I use guava FluentIterable to simplify Maps transformations?
我經常使用經過變換和過濾的Map<U,V>
來獲得另一個Map<U,V'>
,但是變換非常冗長,我在問題Guava中看到了FluentIterable
類:如何結合使用過濾和變換? ,是否可以使用它來簡化以下內容?
public class GuavaTest {
public static class A{
int a;
int b;
int c;
public A(int a, int b, int c){
this.a=a; this.b=b; this.c=c;
}
}
public static void main(String[] args) {
//Example 2
final Map<String, A> map =Maps.newHashMap();
map.put("obj1",new A(1,1,1)); map.put("obj2",new A(1,2,1));
map.put("obj3",new A(1,3,1)); map.put("obj4",new A(1,4,1));
Function<A, Integer> function = new Function<A, Integer>() {
@Nullable
@Override
public Integer apply(@Nullable A input) {
return input.b;
}
};
Predicate<Integer> isPair = new Predicate<Integer>() {
@Override
public boolean apply(@Nullable Integer input) {
return input % 2 == 0;
}
};
//Can I use FluentIterable here ??
Map<String, Integer> stringIntegerMap = Maps.transformValues(map, function);
Map<String, Integer> stringIntegerMap1 = Maps.filterValues(stringIntegerMap, isPair);
}
}
沒有。
FluentIterable
實際上對地圖沒有做任何事情,當然也不會縮短您的Function
和Predicate
實現。 實際上,唯一可以縮短這些時間的是Java 8 lambda。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.