对entrySet()返回的Map.Entry<K,V>不理解

对entrySet()返回的Map.Entry<K,V>不理解

老师,我看源码,Entry<K,V>只是Map接口中的一个内部接口,

​Map.Entry<K,V>代表的是一个接口么?

他的实例对象是什么?

entrySet()返回的是一个装这种对象的Set是么?

请老师帮忙详细讲解下,谢谢!

正在回答

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

1回答

同学你好,1、Map是java中的接口,Map.Entry是Map的一个内部接口,此接口为泛型,定义为Entry<K,V>,它表示一个key-value对。

    Map中存放的元素均为键值对,每一个键值对存在一个映射关系。Map中采用Entry来表示一个映射项,映射项包含Key和Value。Map.Entry里面包含getKey()和getValue()方法。所以这里的Map.Entry可以理解为是一种泛型(数据类型)。

    ​2、使用entrySet是一种遍历HashMap的方式,在Entry中存储了key和value的值。

animal.entrySet()得到的是一个Set集合,在集合中存储的是Entry的对象,而Entry是一种泛型(数据类型),就像HashMap一样,对应key和value的值的类型,所以最后对应的形式就是Entry<String,String>。

祝学习愉快!

  • 飞飞侠91 提问者 #1

    老师您好,我主要对Map.Entry<K,V>这个接口的不理解,本来Map<K,V​>接口就可以表示一个键值对,为啥还要加一个内部接口Entry<K,V>?

    2021-05-17 13:32:43
  • 飞飞侠91 提问者 #2

    animal.entrySet()得到的是一个Set集合,在集合中存储的是Entry的对象

    老师,我就是这里不明白,Entry是一个接口,他为什么能有对象?对象不是应该实例化得到的么?他的对象从哪里来的?

    2021-05-17 13:54:37
  • 好帮手慕小班 回复 提问者 飞飞侠91 #3

    同学你好,1、Entry可以将键值对的对应关系封装成对象,即键值对对象。这是Map底层定义的一个内部接口,这个接口就是作为泛型(数据类型)来使用的。

        ​2、定义这个接口的作用就是可以将key-value放在一个Entry中,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。

        ​3、entrySet()是Map集合中的另一种遍历方式,获取的是一组的键值对的数据,也便于后面对应key值的遍历获取比较等操作,所以Map在底层定义了Entry这个内部接口,作为泛型来使用。

    祝学习愉快!

    2021-05-17 17:51:25
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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