每日三道题
1.HashMap和HashTable的区别。
2.ArrayList和LinkedList的区别。
3.安全的集合框架有。
一.HashMap和HashTable的区别
- 底层数据结构不同:jdk1.7底层都是数组+链表,但jdk1.8 HashMap加入了红黑树
- Hashtable 是不允许键或值为 null 的,HashMap 的键值则都可以为 null。
- 初始化容量不同:HashMap 的初始容量为:16,Hashtable 初始容量为:11,两者的负载因子默认都是:0.75
- 扩容机制不同:当已用容量>总容量 * 负载因子时,HashMap 扩容规则为当前容量翻倍,Hashtable 扩容规则为当前容量翻倍 +1。
- 同步性不同: Hashtable是同步(synchronized)的,适用于多线程环境,而hashmap不是同步的,适用于单线程环境。多个线程可以共享一个Hashtable;
- 当HashMap的数组长度到达64且链表长度大于8时,链表转换为红黑树
二.ArrayList和LinkedList的区别
- ArrayList:底层是数组,查询快增删慢,初始容量是10,扩展为原来1.5倍
- LinkedList:底层是链表,增删快查询慢
三.安全的集合类型有
- Vector
- ConcurrentHashMap
- HashTable