HashMap详解

67 阅读1分钟

1.HashMap的特点

  1. HashMap中存放的是key和value
  2. HashMap的底层维护的是一个哈希表,因此也是无序的
  3. 不能添加重复元素,当添加的元素key值相同时,会发生value值的替换
  4. 当数组中某条链表的长度超过8,并且维护的table数组的长度超过6
  5. 时,就会对这条链表进行树化形成红黑树。

2.HashMap的遍历

//第一种遍历方式
Set<Integer> integers = hashMap.keySet();
for (Integer integer : integers) {
    System.out.println(integer + " : " + hashMap.get(integer));
}

//第二种遍历方式
Set<Map.Entry<Integer, Person>> entries = hashMap.entrySet();
for (Map.Entry<Integer, Person> entry : entries) {
    System.out.println(entry.getKey() +" : " + entry.getValue());
}

3.HashMap的扩容机制

  1. 使用无参构造初始化的HashMap的大小为,第一次添加元素时初始化大小变为16,此后当table数组中的元素个数超过加载因子和容量大小的乘积时,进行2倍扩容
  2. 使用有参构造器指定初始化容量来初始化的HashMap的初始化容量大小为0,第一次添加元素时初始化容量大小为比在构造方法中指定的大小大的最小的2的次幂。此后,当数组中元素个数大于加载因子和容量的乘积时,进行2倍扩容。