hashMap动态更新对象

这篇博客探讨了在Java中使用HashMap时,如何在迭代过程中动态更新对象的问题。作者通过ExcelTest类读取Excel文件并打表展示了HashMap如何在迭代过程中覆盖旧的message内容。分析指出,HashMap底层通过对象的hashcode进行映射,导致所有映射值被同一对象更新。作者还解释了hashcode的逻辑唯一性和底层实现原理,涉及位运算、移位和掩码等概念。
如果你创建了一个 hashMap,那么你每次打表进去一个对象message.在迭代算法中,更新messsage数据,也就是覆盖旧message的内容。
迭代完成,恭喜你,你创建的hashMap里面的每条映射都一样!
很不好意思的说。这个设计,让我蛋碎很久。不过sun公司既然这样设计,必然有好处的。里面散列数据的负载因子0.75.接近一个黄金的数据分隔比例,提高空间利用率,单单从这个设计可以看出,sun公司不是让java更加的发挥速度方面,而是让设计的数据集合能够去适合最新最和谐(包括内存&时间效率)

excelTest类,测试出来的打表
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

import jxl.*;
import jxl.read.biff.BiffException;


public class ExcelTest {

   
    public static void main(String[] args) throws  BiffException, IOException {
        //读取指定文件
        Workbook rwb = Workbook.getWorkbook(new File("F:/user.xls"));
        //获取第几个sheet,从0开始
       
HashMap可以存放自定义对象。在给HashMap添加元素时,键值对的键可以是自定义对象,值可以是任何类型的对象。但是,在使用自定义对象作为键时,需要确保自定义对象正确地实现了hashCode()和equals()方法。这是因为HashMap在判断键是否相同时会依赖于hashCode()和equals()方法的实现。 在给HashMap添加自定义对象时,可以复写自定义类的hashCode()和equals()方法来确保键的唯一性。在上面的示例中,Student类重写了hashCode()和equals()方法,以确保当name和age相同时,对象被视为相同的键。这样,即使添加了多个相同属性的Student对象,它们仍然被视为相同的键。 通过复写hashCode()和equals()方法,HashMap可以正确地将自定义对象作为键进行存储和查找。这样,可以方便地通过自定义对象来获取相应的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [HashMap集合存储自定义对象](https://blog.youkuaiyun.com/weixin_57219176/article/details/124340641)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [HashMap存储自定义对象](https://blog.youkuaiyun.com/houguofei123/article/details/81712692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值