Map的keySet()与values()方法

Posted always_new

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map的keySet()与values()方法相关的知识,希望对你有一定的参考价值。

当我们想要获取一个Map中的所有键或者值时,会发现Map()已经有对应的方法:

keySet()方法:返回Map中所有键的Set<>

values()方法:返回Map中所有值的Collection<>

但是这里有一个需要注意的问题是,从keySet()文档与values()文档中我们可以发现

图1.keySet()文档

图2.values()文档

文档中说明,keySet()返回的是Map中键的映射,values()返回的是Map中值的映射,对Map中所作的一切修改均会反映到返回的两个集合中,反之亦然

也就是说,如果你在keySet()或values()返回的集合中进行了增添或者删除等操作,Map()中的键(值)同样会受到影响

因此,当我们调用两个方法获取Map()中的键与值时,一定要注意:返回的集合是对Map()对应值的引用,而非复制。如果想要对其键(值)集合进行操作而不对Map造成影响,需要重新建立集合并将keySet()与values()返回集合中的键(值)全部添加进去,而非直接在其返回的集合上进行操作

(话说,这难道不是不符合Safety from rep exposure吗)

以上是关于Map的keySet()与values()方法的主要内容,如果未能解决你的问题,请参考以下文章

map集合中value()keySet()entrySet()区别

Map的迭代

java Map 怎么遍历

Java中的Map 笔记

使用 entrySet 遍历 Map 类集合 KV ,而不是 keySet 方式进行遍历的好处

Map