Map,HashMap,entrySet,Entry,Set,5个之间的关系?

Map,HashMap,entrySet,Entry,Set,5个之间的关系?

Map是接口,,HashMap是Map的实现类,entrySet是Map的抽象方法即HashMap的具体实现方法

这三个都没问题,但以前的同学其实最难理解的是 Set,Entry和另外3个之间的关系,老师们一直没回答清楚??

个人理解:entrySet方法返回Set接口对象,这个对象里面存着 Entry 这种自定义的数据(结构) 为 <String,String>

问题    Set是一个接口,接口里面只能存 常量和抽象方法,,请问它返回对象后里面所存的数据为什么能改变??  Set对象里面不是存的常量吗?? 为什么还能存  Entry  这种如同变量的数据结构 <String,String>

请务必详细回答,这5个东西之间的关系很多同学都搞不懂,请不要含糊不清企图蒙混过关,谢谢!


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、Map中存放的元素均为键值对,每一个键值对存在一个映射关系。Map中采用Entry来表示一个映射项,映射项包含Key和Value。Map.Entry里面包含getKey()和getValue()方法。

如下:

http://img1.sycdn.imooc.com//climg/5f10028d0966946510610652.jpg

2、Set是一个泛型接口,使用Set时可以指定存储的数据类型。Set里面存储的是对象,不能存储常量和抽象方法。

Set<Entry<K,V>> entrySet()方法是将map集合中的映射关系取出(这个关系是Map.Entry类型)。该方法返回值就是map中各个键值对映射关系的Set集合。

如下:

http://img1.sycdn.imooc.com//climg/5f10048e09a0983a03130091.jpg

祝:学习愉快~

  • py_builder 提问者 #1
    老师你的说法不能说错,但完全没有触及本质原理,即根本没说清它们之间的关系。 我自学了下,其实应该是这样的: 数据结构为 基本数据类型+引用数据类型(实际上就是由类或者结构体(C++中)构成),而类是结构体的升级版即 多种数据类型+方法。 HashMap 是一个类 Entry是HashMap中的一个内部类,Entry内部类构造了K key ;V Value两个属性值,这两个属性值的类型KV为泛型,由后续用户自定义,这就是<String,String>的由来,它指明KV分别指代String,当然可以其它任意用户想指定的类型。 然后再这个内部类再创建一个数组 这个数组是它本身的类型 即 Entry[,即每一个Entry[0],Entry[1]...Entry[n]保存了一对Key,Value 刚刚说明的其实就是 Map 和 Map.Entry的实现类,Map是接口,其实现类是HashMap Map.Entry是Map的内部接口,它的实现类是HashMap的内部类Entry 因此,其实Map和Map.Entry不过就是接口,真正实现 字典 这种数据类型的是 HashMap类和其内部类Entry
    2020-07-18 09:20:54
  • 好帮手慕阿慧 回复 提问者 py_builder #2
    同学你好,你的理解是正确的。祝:学习愉快~
    2020-07-18 13:36:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师