3

为什么返回而不只是(keySet()从Java SE8 开始)?ConcurrentHashMapKeySetView<K,V>Set

ConcurrentHashMap.KeySetView<K,V>   keySet()

KeySetView - ConcurrentHashMap 作为一组键的视图,其中 可以选择通过映射到公共值来启用添加。

但是keySet()不能启用“映射到一个共同的值”(不像keySet(V mappedValue)),所以我认为这样做没有任何意义KeySetView<K,V>——boolean add(K e)而且boolean addAll(Collection<? extends K> c)方法总是会扔UnsupportedOperationException在这里。

PS 我知道KeySetView<K,V> extends (is-a) Set<K>。所以我可以像往常一样使用 Set 接口。

我也明白 keySet() 可以自由地将它喜欢的任何类返回给 Set 接口(我们不会关心),但是在 ConcurrenthashMap 中,返回类被明确记录 - 似乎是出于某种有用的目的。

也许这里唯一的用例是可以KeySetView<K,V>访问支持地图

ConcurrentHashMap<K,V>  getMap()
4

0 回答 0