java map集合赋值 key值相同覆盖问题

java map集合赋值 key值相同覆盖问题,第1张

这样看是 map 里面 有3个key total rows footer

其中 rows 和 footer 又是List<Map<String,Object>>这样的 list里面放多个map

其实一般理解为 一个JSONObject 里面有3组值 total rows footer

rows 和 footer 又是 JSONArray格式的. JSONArray里面又是多个JSONObject

原因是你向hashMap中添加元素是是添加的引用,虽然两个key是一样,但是引用不同,如果要避免这种情况需要重写两个函数 public boolean equals(Object obj)和 public int hashCode()

首先Map是键值对集合,因为map是无序的键和值是一一对应的,一个键(key)对应一个值,通过键(key)来找值,但是如果你定义两个同样的key,这样就违背了java对map的定义,键和值是一一对应的;

特别说明:建的值是不能相同的,这个语法会报错,

但是如果你的键是引用类型(存的是地址),在语法上是不会报错的,后一个会将前一个覆盖,从而指向后一个键的值

public class TestEquals {

public static void main(String[] args) {

String s1=new String("abc")

String s2=new String("abc")

Map map=new HashMap()

map.put(s1, "abc123")

map.put(s2, "ABC456")//第二个会覆盖第一个元素

System.out.println(map.size())

System.out.println(map.get(s1))

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11807024.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存