JAVA-初步认识-常用对象API(集合框架-重点方法entryset演示图解)
一.
对于上一节的操作而言,这里还有另外一种做法,相对而言,有一点麻烦。
从刚才的动作,总结出一个原理。map集合没有迭代器,但是我们可以把map转换成有迭代器的集合,比如说set。
这是为什么呢?为什么不返回arrylist,这是拿所有的键,键是唯一的,所以返回的应该是set集合,保证元素的唯一性。
接下来,在API当中,还有一个方法也是返回set集合,(这里的set有什么特殊含义么?)
现在用它来完成取出所有元素的方式。keyset大家比较容易明白,里面装的都是键。但是,entryset是返回此映射所包含的映射关系的set视图,映射关系是什么意思呢?映射关系,代表这键和值之间的对应,这里面存储的是对应关系。map.entry是键值关系类型,一会儿解释为什么这么写。对应关系里面包含键和值。
迭代器后面要有泛型(不太懂)。it.next返回的是结婚证,set中的泛型我不管,但是迭代器中的泛型和set中的要一致。
一现在有点纠结,有了结婚证,怎么拿这里面的键和值呢?结婚证里面本身包含着键和值,由键和值组成。取结婚证里的键和值,结婚证自己最清楚。
点击一下map.entry<K,V>这个结婚证,方法摘要中显示都能取的出来,而且还能设置。随便可以改变某一个键的值。
结果显示没有问题,这是第二种取出方法。画个图解释一下,
entrySet得到的结婚证什么样呢?它把键和值封装成一个对象,这是一个元素,存了四个元素。这里面的一个元素就是map,entry<key.value>对象。
很多人对map.entry<key,value>有点迷糊,对于下图的写法有点搞不清。
这种操作以前见过,
myentry是接口,随着外部接口加载而加载。
先说map接口,然后往下看是嵌套类。嵌套类是内置类,是静态的interface,
点进去看,是正在封闭接口map当中。你见过静态注释么?只有成员才有,所以它是个成员。
为什么要把它定义在里面,放在外面不行么?MyEntry是一个包含键和值的内容,它是键和值的映射关系对象,只有现有这种map映射,才存在着关系。而它把关系封装成对象,关系在访问map中的键和值。那就是外部规则中有内部规则,内部规则直接访问外部规则中的内容。什么点什么,全部都是嵌套的。
内部类本身是种封装形式,但是如果它能对外使用的话,就暴露出去。
接口中的静态接口