java - 如何使用 Guava 泛型来转换这张 map ?

标签 java guava

假设我有一个像这样的java类

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) {
        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<String,Integer> res = Maps.newHashMap();
        for(final String s : map.keySet()){
            res.put(s,map.get(s).b);
        }

    }
}

如何获取资源 using generic Guava 实用程序?

更一般地说,我希望能够从 Map<U,V> 获得一个Map<U,V'>其中 V' 类型的值将是类 V 的对象的成员

最佳答案

您可以像这样简单地完成此操作。

Function<A, Integer> extractBFromA = new Function<A, Integer>() {
  @Override public Integer apply(A input) {
    return input.b;
  }
}
...
Map<String,Integer> res = Maps.transformValues(map, extractBFromA);

或者,不考虑可重用性:

Map<String,Integer> res = Maps.transformValues(map, new Function<A,Integer>() {
  @Override public Integer apply(A input) {
    return input.b;
  }
});

注意:结果是初始 map 上的 View 。您可能希望将其存储在新的 HashMap(或 ImmutableMap 或任何其他 Map)中。

关于java - 如何使用 Guava 泛型来转换这张 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23391824/

相关文章:

java - 如何使用共享 key 正确关联多个 BiMap 集合?

java - 将字符串添加到此字符串数组的最有效方法是什么?

Java Maze Solver - 我从来没有这么卡过

java - Optional 中包含的实例类

java - 为空时获取空字符串

java.lang.NoClassDefFoundError : com/google/common/collect/ImmutableMap error using GeckoDriver Firefox through Selenium in Java

java - Spring Boot Data REST、HATEOAS 无法使用自定义 Controller

java - 我应该如何从 servlet 获得 Ajax 响应?

java - 是否可以在 servlet 外部使用 UrlRewriter 并在 Java 中使用过滤器?

java - 如何纠正这个目前只抛出异常但我也想返回一个对象的函数?