今天面试问到一个HashMap和HashTable的区别,这里来总结一下:
首先哈希表由数组+链表组成,一个长度为16的数组中,每个元素存储的是一个链表的头结点.而HashMap和HashTable就是哈希表结构
1.继承类不同:
HashMap继承AbstractMap
HashTable继承Dictionary
2.:put方法对key和value的要求不同
HashMap允许Entry的key或value为null
HashTable不允许Entry的Key或Value为null,
否则出现NullPointerException
3.执行效率不同:
HashMap是非线程安全的,是HashTable的轻量级实现,效率高
HashTable是线程安全的,效率较低.
4.有无contains方法
HashMap没有contains方法
HashTable由contains方法
还有为了成功地在哈希表中存储和获取对象,用作键的对象必须实现hashCode
方法和 equals
方法
为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode
方法和 equals
方法。