是否有一种惯用的方式来获取a Set<K>和a Function<K,V>,并获得Map<K,V>实时视图?(即Map由Set和Function组合支持,如果例如添加了元素Set,则相应的条目也存在于Map)中.
(Collections2.filter有关实时视图的更多讨论,请参阅
如果不需要实时视图怎么办?有没有比这更好的东西:
public static <K,V> Map<K,V> newMapFrom(Set<K> keys, Function<? super K,V> f) {
Map<K,V> map = Maps.newHashMap();
for (K k : keys) {
map.put(k, f.apply(k));
}
return map;
}
Run Code Online (Sandbox Code Playgroud) 我有一套,我想将它转换为地图,以便稍后在番石榴中使用它Maps.difference().我只关心差异中的关键.
拿出这个版本:
private <T> Map<T, T> toMap(Set<T> set) {
return set.stream().collect(Collectors.toMap(Function.identity(), Function.identity()));
}
Run Code Online (Sandbox Code Playgroud)
但是,我知道通常,一个集合具有地图的支持字段.这是我用来创建地图的方法:
public static <E> Set<E> newConcurrentHashSet() {
return Collections.newSetFromMap(new ConcurrentHashMap<E, Boolean>());
}
Run Code Online (Sandbox Code Playgroud)
因为我只需要钥匙,我想也许我可以以某种方式获得这个领域的视图.任何的想法?