簡體   English   中英

如何使用番石榴FluentIterable簡化地圖轉換?

[英]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實際上對地圖沒有做任何事情,當然也不會縮短您的FunctionPredicate實現。 實際上,唯一可以縮短這些時間的是Java 8 lambda。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM