HashMap 重新认知

今天跟对象讨论了一下,终于对HashMap的结构有了一点点新的认识,之前都是看文章啥的,他们写的太晦涩了,自己都看不懂,也不举个栗子。今天我就举个栗子,相信大家都写过这样的代码

Map<String,Object> param = new HashMap<String,Object>();
List<String> list = new ArrayList<String>();
list.add("123");
list.add("456");
param.put("status", "01");
param.put("list", "list");
param.put("type", "0");

因为键值对存放位置是根据key 的值按照hash算法算出来的,但是呢不同的key 有可能hash算法算出来的地址值是相同的,举个栗子:

有可能<status,01>和<type,0>算出来的存储地址是一样的,这两个就构成了链表

如果<list,list>hash算出来的地址是不一样的那么就是这两个不一样的地址之间就是数组

  黄色框起来的就是数组,紫色框起来的就是链表

原文地址:https://www.cnblogs.com/sailormoon/p/8393964.html