Map <k,v> .keySet()不支持add / addAll操作

时间:2015-05-31 07:50:07

标签: java dictionary set keyset unsupportedoperation

关于Map<K,V>界面:

为什么keySet()会返回支持Set操作但不支持removeadd()操作的addAll()

3 个答案:

答案 0 :(得分:11)

Set返回的keySetMap支持,因此对地图的更改是 反映在集合中,反之亦然。这意味着在remove上调用Set会从Entry中删除匹配的Map

add上调用addAllSet是没有意义的,因为您无法将没有相应值[s]的键[s]添加到{{1} }}

答案 1 :(得分:2)

想想你的要求:

你想要检索地图的所有KEYS(并且该集合不是键的“副本”;它代表地图的键)。

然后你要求向那些KEYS添加元素。换句话说:您正在查看的“数据集”具有来自地图的键的语义含义。并且您希望增加“数据集” - 但不提供该地图的相应条目。

另一方面,删除是直截了当的;删除密钥也会删除地图中的相应条目。

答案 2 :(得分:2)

这是因为集合中的每个键都链接到地图中的值。删除密钥会删除相关的值,但要添加,您需要一个值,而不仅仅是一个密钥。