关于Map<K,V>
界面:
为什么keySet()
返回一个Set
支持remove
运算却不支持add()
andaddAll()
运算的?
关于Map<K,V>
界面:
为什么keySet()
返回一个Set
支持remove
运算却不支持add()
andaddAll()
运算的?
Set
返回的由支持keySet
,Map
因此对地图的更改会反映在集合中,反之亦然。这意味着调用remove
它Set
会Entry
从Map
.
在. _ add
_ _addAll
Set
Map
想想你的要求:
您想要检索地图的所有 KEYS(并且该集合不是键的“副本”;它代表地图的键)。
然后您要求向这些 KEYS 添加元素。换句话说:您正在查看的“数据集”具有来自地图的键的语义含义。并且您想增加该“数据集” - 但不提供该地图的相应条目。
另一方面,删除是直截了当的;删除一个键也会从映射中删除相应的条目。
这是因为集合中的每个键都链接到映射中的一个值。删除键将删除关联的值,但要添加,您需要一个值而不仅仅是一个键。