返回映射中所包含键的基于标识的 set 视图。该 set 受映射支持,所以对映射的改变可在此 set 中反映出来,反之亦然。如果在对 set 进行迭代的同时修改映射,则迭代的结果是未定义的。该 set 支持元素的移除,通过 iterator.remove、set.remove、removeall、retainall 和 clear 方法可从映射中移除相应的映射关系。它不支持 add 或 addall 方法。
此方法返回的
iis7站长之家实现 set 接口时,它不 遵守 set 的常规协定。与其底层映射一样,此方法返回的 set 将元素相等性定义为引用相等性,而非对象相等性。这一点将对其 contains、remove、containsall、equals 和 hashcode 方法的行为产生影响。
如果指定对象是一个包含与返回 set 完全相同的对象引用的 set,则返回 set 的 equals 方法将返回 true。如果将此方法返回的 set 与正常 set 相比较,则可能违反 object.equals 协定的对称性和传递性要求。但是,需要保证在此方法返回的 set 中遵守 object.equals 协定。
返回 set 的 hashcode 方法返回该 set 中元素的标识哈希码 和,而不是其哈希码的和。为了强制遵守此方法所返回 set 中 object.hashcode 方法的常规协定,需要通过更改 equals 方法的语义来强制完成。
- 指定者:
- 接口
map
中的 keyset
- 覆盖:
- 类
abstractmap
中的 keyset
- 返回:
- 映射所含键的基于标识的 set 视图
- 另请参见:
object.equals(object)
,
system.identityhashcode(object)