public Set<Map.Entry<K,V>> entrySet()返回此映射所包含的映射关系的 Set 视图。 该 set 受映射支持,所以对映射的更改将反映在此 set 中,反之亦然。如果在对 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作,或者通过在该迭代器返回的映射项上执行 setValue 操作除外),则迭代结果是不确定的。该 set 支持元素的移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从该映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
这是 API 的解释
我觉得已经说的很清楚了,我来给你解释下
他说明的是 返回的 set (Map.entry<k,v>) 和原来haspMap(k,v) 之间的关系
因为在对set进行迭代的时候在底层 都是调用 iterator 迭代器来遍历 集合中的元素的,而且,该set 返回的 iterator 会锁定该集合,多以该API文档的解释是,通过迭代器自己的 remove 操作,或者通过在该迭代器返回的映射项上执行 setValue 操作除外),则迭代结果是不确定的。
说明在迭代器上返回的 对象上,用 set 的方法去修改 会出现意外,一般情况下 是 通过iterator 遍历的元素,就必须通过 itetator 的方法来修改!
这个方法的解释说的就是 在 iterator 上操纵元素,和在该SET 上操纵元素之间的联系和区别
|