HashMap与Hashtable的异同是什么?
答:区别:
HashMap:线程非同步,效率高
键、值可以为null,但为null的键只能有一个
继承AbstractMap类实现Map接口,版本从1.2开始
Hashtable:线程同步,安全性高
键值不能为null(编译不出错,但运行会空指针异常)
继承Dictionary类实现Map接口,版本从1.0开始
相同:二者都实现了Map接口,都是通过键值对存储数据,二者的键都是唯一的,无序的。
HashMap的底层原理
HashMap的底层数据结构是什么?
答:有很多种,主流的是顺序表+链表
2.简述哈希表的去重原理?
答:当HashCode计算出来的存储位置上已经有了元素,则使用equals方法,将HashCode和已经在该位置上的所有HashCode进行内容的对比,如果一样,则不再添加,否则以链表的形式添加到链表末尾。