假设我有一个像这样的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/