HashMap、HashTable
简单点来说,HashTable是线程安全的HashMap,都实现了Map接口,Map接口对键值对进行映射。但还是有些不同,这里从三点来说:线程安全性,同步(synchronization),以及速度。
-
我们先来看看HashMap的底层:
public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
不难看出, HashMap实现了 Cloneable, Serializable两大接口;
底层描述:HashMap底层是数组加链表的形式,基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在