向 List 中添加 HashMap 出现 List 内容全变为最后一次添加的 HashMap 的问题

list在存HashMap时遇到的问题及解决方案 最近需要将两个list 的值给转化成hashMap 存到List 中,原先设计代码如下 public List<HashMap<String, String>> getT(List<E> h, List<E> r, String t) { List<HashMap<String, String>> table = n... 阅读详情

今天在写一个方法的时候需要构造一个 List 包含一组 HashMap 的情况 ,和这个问题类似

How to add HashMap to ArrayList

ArrayList<HashMap<String, String>> prodArrayList = new ArrayList<HashMap<String, String>>();

HashMap<String, String> prodHashMap = new HashMap<String, String>();

public void addProd(View ap)
{
    // test arraylist of hashmaps
    prodHashMap.put("prod", tvProd.getText().toString());

    prodArrayList.add(prodHashMap);

    tvProd.setText("");

    // check data ///

    Log.e("myLog","Data prodArrayList in ADD Method Size = "+prodArrayList.size());

    for(int i=0; i< prodArrayList.size();i++)
    {
         Log.e("myLog","Data prodArrayList in ADD Method = "+prodArrayList.get(i).toString());
    }
}

具体情况可以点进去看下 ,会出现这个问题的原因是 HashMap 添加到 List 中的时候实际上只是一个引用 ,而每次更新 HashMap 时使用的 Key 又相同的情况下会出现所有的 HashMap 实际上引用的是同一个 HashMap ,且值只有一个 。

问题找到了 ,解决问题的方法就有了 ,有这两种方法来避免这个问题 。

public void addProd(View ap)
{
    // test arraylist of hashmaps
    HashMap<String, String> prodHashMap = new HashMap<String, String>();
    prodHashMap.put("prod", tvProd.getText().toString());

    prodArrayList.add(prodHashMap);

    tvProd.setText("");

    // check data ///

    Log.e("myLog","Data prodArrayList in ADD Method Size = "+prodArrayList.size());

    for(int i=0; i< prodArrayList.size();i++)
    {
         Log.e("myLog","Data prodArrayList in ADD Method = "+prodArrayList.get(i).toString());
    }
}

一是 每次更新 HashMap 时使用不同的 key ,这样 List 只需要引用一个 HashMap 即可 。

二是 在每一次都新建一个 HashMap 来保存数据,之后再将 HashMap 添加到 List 中 ,避免使用 List.add 的时候改变了数据 ,就可以避免这个问题了。

HashMap集合和List集合的转化(代码+思路) 思路 首先我们明确HashMap和List是什么: HashMap:保存一个键值对(元素有两个部分组成), (key,value)。 List:保存一个元素,add(value)。 我们发现,HashMap存一对数据,而List只存一个数据,那么只要把HashMap的两个数据封装在一起就可以了,也就是把HashMap这两个数据封装到对象里。 **例:**HashMap里存这样两种数据:学生的id和学生的名字,(id,name),我们要把HashMap和List互相转化,就可以把id,name封装在对象里。 阅读详情

相关推荐

超详细网安学习路线(Day1-Day2)

渗透测试(Penetration Testing),就是一种通过模拟恶意攻击者的技术与方法,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响后果安全隐患的一种安全测试与评估方法。简单来说,就是合法去入侵别人的系统,来帮助其找出漏洞,增强防护能力。

aobulaien001的博客 3389

List中循环添加Map集合时出现数据覆盖问题原因分析及解决方法

我们可能会遇到当我们向list集合中运用add()方法循环添加map集合时会出现后添加的map集合数据覆盖前面添加的数据问题,最终让添加的数据都一样且都是最后一条数据,接下来我就对此问题进行原因分析以及解决方法。 问题展现 不多说,先放向list集合添加map集合时出现问题的代码 String[] s ={"12","13","14","11"}; List list = ...

gaojian2213的博客 6024

从48V到800V:TI BMS芯片如何应对高压电池管理挑战?

电池管理系统是电动汽车和储能系统的核心,负责监控电池状态、保障安全并优化性能。其核心原理在于通过高精度测量电池电压、电流和温度,结合算法估算电池的荷电状态与健康状态,从而实现精准的能量管理与寿命预测。在技术价值层面,高精度测量能最大化利用电池化学窗口,提升能量密度与续航里程;而符合功能安全标准的设计则是防止热失控等安全事故的基石。随着汽车电气化从48V轻混系统向400V/800V高压平台演进,BMS面临着测量精度、功能安全、高压隔离通信和系统成本等多重挑战。德州仪器的BQ796xx和BQ75614系列芯片,

weixin_27017211的博客 342

Java 遍历HashMap的两种方式

(1)keySet方法:将HashMap中键返回并使用set集合存储。 public Set<K> keySet() 案例 private static void show01() { Map<String, String> stringStringHashMap = new HashMap<>(); stringStr...

夏沐的博客 322

【教程】安装 iterm2 打造漂亮且高性能的 mac 终端

最近电脑重新安装系统,开发环境和软件都需要重新安装和配置,其中终端工具是必不可少的,正好利用这个机会,介绍一下 macOS 终端神器 iTerm2 的安装和配置,并推荐几款好用的插件和工具。在IT领域中,工具的选择和使用对于开发者和运维人员来说至关重要。而在众多终端模拟器中,ITerm2无疑是一个出色的选择,希望本篇的文章能对你有些帮助,感兴趣的朋友可以登录官网查看官方文档。我是刘大大,持续分享AI相关领域的知识和工具,喜欢点点关注。

刘大大AI的博客 3400

一次关于list.add(map)的坑

主要原因是对于堆栈的理解不够敏感,先上代码 List list = new ArrayList(); Map map = new HashMap(); List<MemberError> listMamber = ctx.getParam("LIST"); for(int i = 0;i<listMamber;i++){ MemberError memberError = listMamber.get(i); map.put("xx1",memberError.getX

ChaoticNg的博客 1937

别再纠结了!车规MCU选M7还是R52?一张图看懂你的车身控制器/域控制器该用谁

本文深入探讨车规MCU选型中Cortex-M7与Cortex-R52的核心差异,提供基于安全等级与实时性需求的选型决策图。通过对比ASIL认证、实时性能及成本效益,帮助工程师在车身控制器/域控制器设计中做出精准选择,避免潜在风险与隐性成本。

weixin_42628688的博客 397

[Java] 遍历HashMap的几种方式总结

遍历HashMap的几种方式 新建hashmap HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("1", "a"); hashMap.put("2", "b"); 利用entrySet()方式遍历(最常用,效率最高) for (Map.Entry entry : hashMap.entrySet()){ System.out.println("key:" + entry.getKey() + "

qq_40898875的博客 524

海思图像质量之HiPQTool调试

文章目录一. HiPQTool 界面二. 图像调试三. 将调试参数写入程序中 一. HiPQTool 界面 二. 图像调试 三. 将调试参数写入程序中

lzg2011的博客 2381

弱小目标检测跟踪算法研究(5) 基于顶帽变换(Top_hat)算法的红外弱小目标检测之背景抑制

基于顶帽变换(Top_hat)算法的红外弱小目标检测之背景抑制1. 前言2. 顶帽变换(Top_hat)算法3. Matlab仿真4. 小结 1. 前言 红外图像中的弱小目标,目标属性包涵“弱"和“小’’两个方面:“弱’’是指目标在红外波长上所表现出来的强度,具体反映到所拍摄的红外图像上,就是指目标的灰度值;而“小’’是指目标的尺寸大小,也就是前面所述的成像面积很小,反映到红外图像上就是指目标所占的像素数目很少。 SPIE国际光学工程学会(Societyof Photo一0ptical Instrument

sinat_34897952的博客 5293

java HashMap基础

举例: public class test { public static void main(String args[]) { Map<String,String> map = new HashMap<String,String>(); map.put("80100","1"); map.put("80200",...

然而老干妈早就看穿了一切 199

Ardupilot EKF3核心算法《开篇》

Ardupilot EKF3核心算法本专栏重点,透彻,详细的分析了ardupilot的EKF3,保证是你看到的最完美的EKF3资料,相信你的选择不会错误。网上EKF资料真是太多,说真的没有一篇讲解好的。!!

陌城烟雨 1413

java list 转hashmap_将HashMap转换为List

背景​ SpringBoot中,使用@RquestBody注解 hashMap 接收多个参数的json字符串数据,包括一个数组和一个int值。数组中为一个个的对象组成。问题​ 使用 map.get("list") 方法,并进行强制转换为 List 类型时,导致转换后的 List 中的对象变成了 LinkedHashMap 类型​ 当使用 foreach 遍历 List 中的对象时...

weixin_34666364的博客 3528

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

list 重复数据进行归类到hashMap list转hashMap

list 重复数据整理归类到hashMap

min121515的博客 2173

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

关于List转HashMap

关于List转HashMap 在尝试List转hashmap的时候,出现了数据覆盖的现象。 问题在HashMap<String,String> hashMap = new HashMap<String, String>();这句话中,将这一句话换个位置。 public String getAlljs(){ List<Map<String, String&...

weixin_42507017的博客 4504

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

什么是HashMap?什么情况下使用HashMap?

这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【什么是HashMap?什么情况下使用HashMap?】 大家好,我是IT修真院深圳分院第十一期学员,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务十的一个知识点:什么是...

IT修真院:初学者转行到互联网的聚集地 7636

Java 集合知识:List、HashMap、Set

在Android 源码中大量地使用了ArrayMap进行内存中的数据储存和管理,比如Intent.putExtra、Bundle。ArrayMap比HashMap减少30%的内存消耗。

csdn_aiyang的博客 1万+

List、HashMap学习

容器包含List、Set、Map等,此次学习以List和HashMap为主了解源码。

weixin_44866919的博客 1288

java hashmap to list,将HashMap转换为List

背景​ Springmvc中,使用@RquestBody注解 hashMap 接收多个参数的json字符串数据,包括一个数组和一个int值。数组中为一个个的对象组成。问题​ 使用 map.get("list")方法,并进行强制转换为 List 类型时,导致转换后的 List 中的对象变成了 LinkedHashMap 类型​ 当使用foreach遍历 list 中的对象时,抛出类型转换异常解决方法...

weixin_30366107的博客 5220

java 获取hashmap_java中hashmap获取list

标签:首先我们将list存入到map中,如何快速获取list呢我在网站找到两种方式HashMaphm=new HashMap();方式1Iterator iterator = hm.keySet().iterator();while(iterator.hasNext()) {System.out.println(hm.get(iterator.next()));}方式2Set set = hm.e...

weixin_33603067的博客 892

Java/Android 使用HashMap对List去重

当需求是对一个List去重,可以利用HashMap来做。先将List的每一个bean添加进map, 再把map的所有value转成一个新的List。用List中bean的一个唯一属性作为map的key, List中的每一个bean作为map的value。通过hashMap的key不能重复,达到去重的目的。代码如下,下面的代码就是针对传入的参数list去重: private List...

Crystal_xing的专栏 1715

将HashMap中value值存入List中

1、取出HashMap中的value值,存入list中 package com.xtli.controller.algorithm; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import jav

BiggerLee的博客 3万+

List和HashMap的基本使用

1、List public class Test02 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); //取出数据 //first_method 高级for

thrive_home的博客 2672

java hashmap 获取_java中hashmap获取list

首先我们将list存入到map中,如何快速获取list呢我在网站找到两种方式HashMaphm=new HashMap();方式1Iterator iterator = hm.keySet().iterator();while(iterator.hasNext()) {System.out.println(hm.get(iterator.next()));}方式2Set set = hm.entr...

weixin_29695991的博客 485

Java集合框架:Set、List、Map及HashMap底层实现详解

Java集合框架主要分为三大类接口:​​List(列表)​​:有序集合,元素可重复实现类:ArrayList、LinkedList、Vector​​Set(集)​​:无序集合,元素不可重复实现类:HashSet、LinkedHashSet、TreeSet​​Map(映射)​​:键值对集合实现类:HashMap、LinkedHashMap、TreeMap、Hashtable集合类底层结构线程安全有序性允许nullArrayList动态数组否插入顺序是LinkedList。

aakhvb的博客 907
上一篇: 编写网页利器AXURE上手体会——简单页面及页面跳转
下一篇: Mysql 报错 Unknown collation: 'utf8mb4_0900_ai_ci'
六等星痕
博客等级 码龄9年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值