一、首先先熟悉一下HashMap
- HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null值,因为key不允许重复,因此只能有一个键为null.
- 另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。
- HashMap不能保证随着时间的推移Map中的元素次序是不变的。
- HashMap基于hashing原理,当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。
- HashMap的基本属性:
默认初始值大小为16,负载因子0.75(在容量使用达到12的时候会自动扩容,容量为之前的两倍)
这里提一下关于将引用对象当做map的key的注意问题,假设我们定义一个map范型为我们自己的对象:Map<Student,String> map = new HashMap();
对象a:a.setName(“一号”)a.setSex(“男”);
对象c:c.setName(“一号”)c.setSex(“男”);
map.put(a, “123”);
map.put(c,“222”);
System.out.println(“map中获取对象c:”+map.get(a));
System.out.println(“map中获取对象b:”+map.get©);
输出:123 222
按我们之前的初步理解可能会理解为a对象和c对象是一模一样的&#x