HashMap循环赋值导致Value相同的解决办法

博客讲述了在使用List>>结构时,由于Map的引用问题,导致循环赋值后所有Value相同。作者通过分析发现,修改Map中Key的Value时,所有Map引用的是同一内存区域。解决方法是将Map转换为不可变的String,每次循环结束后将Map转成字符串存入List,从而得到预期结果。" 80553344,1376846,MySQL Sending Data延迟问题排查与解决方案,"['数据库优化', 'SQL查询', '数据库管理', '索引使用', 'MySQL性能']
摘要由CSDN通过智能技术生成

原因

因为需要List套Map:List<Map<String,List< String >>>
其实我不在意结构,我只要list结果,list< Object >就可以。
循环做了很多天就是结果不对。
困扰了我很多天,在网上查到几篇文章,
map查询出数据, 对数据修改key 同value 值

将map中key值改变,value不变。遇到错误

其中分析讲的最好的是
修改Map中确定key对应的value问题

因为list中的所有元素(map)的引用都是指向内存中的同一块区域。
所以所有的Value都会一样,都等于最后一个Map的Value。

解决

尝试了一下新new map;然后用iterator循环赋值,但是没有用。
我快崩了呀QAQ

其实很简单。
我只需要把变化的Map改为不变的String即可。
在循环中,每个map.put后面,直接str = map.toString();
然后赋值给list,就可以了。
只是这样做,结构改成了List< String >

代码

public ArrayList<Object> getDepasAndJobs(){
   
        ArrayList<String> depasName = (ArrayList) departmentTableMapper.getAllDepasName();

//        System.out.println("depas: "+depasName.toString());

        //这里应该是查找每个部门对应的Job名字,而不是所有的Job名字
//        List<String> allJobsName = jobTa
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值