HashMap底层的entryset成员变量值什么时候被赋值

本来应该是在你第一次调用了entrySet()方法之后,在方法中new 一个EntrySet 赋给entrySet变量的。但是!!!你一debug情况就悄悄发生了变化!!!当你创建hashMap对象map的代码一走完,debugger为了显示map内容到代码后面(即 map: {} ),马上暗中调用map.toString() ,而hashMap的toString继承自父类AbstractMap,执行的第一句就调用了entrySet()!!这时entrySet真的还是null,就会new EntrySet,然后赋给entrySet。所以早在你写 map.entrySet()之前,entrySet()已经被debugger调用过,map的entrySet变量已不为null了。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
而当你把settings里的debugger的 enable toString object view取消掉之后。
在这里插入图片描述
这时debugger将不再暗中调用toString,走完这一行,entrySet依然为null。
在这里插入图片描述
在这里插入图片描述

这时,再走到我们自己调用的entrySet()时,就会显示entrySet = null,会new 一个EntrySet。
在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: HashMapEntrySet 的区别在于 HashMap 是一种键对映射表,它存储关键字和之间的映射关系;而 EntrySetHashMap 所有键对的集合,它可以用来访问 HashMap 的所有键对。 ### 回答2: HashMapEntrySetJava的两个不同的概念。 1. HashMapJava的一个数据结构,它是一个基于哈希表的Map接口的实现类。它允许存储键对,并根据键的哈希进行快速查找。HashMap的特点是键对的存储是无序的。 2. EntrySetHashMap的一个方法,它返回一个包含所有键对(Entry)的Set集合。每个Entry对象表示一个键对,包括键和对应的EntrySet的返回结果是无序的。 区别: - HashMap是一个数据结构,而EntrySetHashMap提供的一个方法。 - HashMap用于存储键对,而EntrySet用于获取HashMap存储的所有键对。 - HashMap的键对是无序存储的,而返回的EntrySet也是无序的。 使用HashMap时,可以通过调用EntrySet方法来获取HashMap存储的所有键对,进而对键对进行处理,比如遍历所有的键对。这样可以方便地对HashMap的数据进行操作。 ### 回答3: HashMapJava 的一种数据结构,它是基于哈希表实现的,用于存储键对。它允许我们通过键来快速检索和访问,其底层实现是使用数组和链表/红黑树。 EntrySetHashMap 的一个方法,它返回一个包含所有键对映射的 Set 集合。每个键对都是 HashMap 的一个 Entry 对象,它包含了键和的引用。EntrySet 可以用来遍历 HashMap 的所有键对。 HashMapEntrySet 的区别如下: 1. 数据结构:HashMap 是一个类,是存储键对的数据结构。而 EntrySetHashMap 的一个方法,用于获取所有键对的集合。 2. 存储方式:HashMap 使用哈希表来存储数据,通过键的哈希来确定存储位置。而 EntrySet 仅是一个集合,存储了 HashMap 的所有键对。 3. 检索方式:HashMap 允许通过键来快速检索和访问,可以使用 get() 方法根据键获取。而 EntrySet 是用于遍历所有键对的,需要使用循环来逐个获取键对。 4. 作用:HashMap 主要用于存储和管理键对的数据,提供了一系列的操作方法,如 put() 和 get()。而 EntrySet 可以用于遍历 HashMap 的所有键对,进行操作或者获取键对的信息。 总结来说,HashMap 是一种数据结构,用于存储键对,而 EntrySetHashMap 的一个方法,用于获取所有键对的集合。EntrySet 可以通过遍历获取 HashMap 的所有键对,进行操作或者获取键对的信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值