返回此映射所包含映射关系的 set
视图。在返回的 set 中,每个元素都是一个基于引用相等性的 map.entry。该 set 受映射支持,所以对映射的改变可在此 set 中反映出来,反之亦然。如果在对 set 进行迭代的同时修改映射,则迭代的结果是未定义的。该 set 支持元素的移除,通过 iterator.remove、set.remove、removeall、retainall 和 clear 方法可从此映射移除相应的映射关系。它不支持 add 或 addall 方法。
与底层映射一样,此方法所返回 set 中的 map.entry 对象将键和值的相等性定义为引用相等性,而非对象相等性。这一点将对 map.entry 对象的 equals 和 hashcode 方法的行为产生影响。当且仅当 o 为 map.entry 并且 e.getkey()==o.getkey() && e.getvalue()==o.getvalue() 时,基于引用相等性的 map.entry e 等于对象 o。为了适应这些相等语义,hashcode 方法返回 system.identityhashcode(e.getkey()) ^ system.identityhashcode(e.getvalue())。
由于此方法所返回 set 中 map.entry 实例的基于引用相等性的语义,所以如果将该 set 中的任何项与正常映射项相比较,或者将此方法返回的 set 与正常映射项(比如在正式映射上对此方法的调用所返回的项)的 set 相比较,则可能违反 object.equals(object)
协定的对称性和传递性要求。但是,需要保证在基于标识的映射项中和在这些项的 set 中遵守 object.equals 协定。
- 指定者:
- 接口
map
中的 entryset
- 指定者:
- 类
abstractmap
中的 entryset
- 返回:
- 此映射所含标识映射关系的 set 视图