一.
现在取出map集合中的所有元素,不是输出集合,而是取出集合中所有元素。猜想是否可以采用迭代器,发现map中没有迭代器方法,
如果它有迭代器就出事了,因为collection里面具备迭代器,map和collection没什么关系,所以它不能有迭代器。那怎么办呢?
这里面有get方法,通过键就可以拿到相应的值,如果拿到所有的键,那么有可能得到所有的值。现在一个个拿键太麻烦了,
这里有一个方法叫keyset,key是键,set是集合,合起来就是键集。视图可以理解为一种可视化的映射关系。他里面存储了一种结构,你能看到这种结构,它会拿到或者返回这种结构。
map这个词起的很好,地图就是一个标准的映射关系图。
keyset怎么用呢?它返回的是set集合,这里面装的全都是键,
取出map中的所有元素,原理是什么?
map是没有迭代器的,set有迭代器。
首先它访问的是set集合,来一个set。往set里面装的是键,键是Integer。紧跟着来个keyset,keyset这个名字是故意取的,可读性强有意义。keyset这个名字和方法名相同了,故意的。
while中为什么能够冒出key?
输出的结果就是2,6,7,8。hashmap是无序的,接下来找值怎么找?
直接将程序中while修改一下,就可以了,
对这里的知识点我是这么理解的,直接取出所有的键和值,是无法操作的。先借用外在的东西取出所有的键,然后再取出所有的值。
下面图解一下,
map集合双列的,然后对集合做了一个操作。通过keyset得到了一个set集合,里面装的都是key。这个时候,拿到了所有键的集合。接着迭代,对每一个键进行get,(这就奇怪了,为什么key可以在不同的部分起作用呢?)先拿所有键,再拿所有的值就容易了。