java常见基础面试题(二)
2023-06-01 本文已影响0人
小院看客
一、map是有序的吗?
Map是无序的
二、HashMap和HashTable的区别
1、线程安全方向:HashMap是非线程安全的;HashTable内部方法基本都经过synchronized修饰;
2、效率:因为线程安全问题,HashMap要比HashTable效率高一点。(HashTable基本被淘汰);
3、对NULL key和NULL value的支持:HashMap可以存null的key和value,但空键值只能有一个,空值可以有多个;HashTable不允许有NULL键和值,否则会抛出异常。
4、底层结构:HashMap当链表长度大于8,数组长度大于64时,结构转变为红黑树。
5、初识容量、扩容:HashTable默认初始大小为11,之后每次扩充为原来的2n+1;HashMap默认的初始容量为16,装载因子时0.75,所以当大小超过12就动态扩容,将长度扩大为原来的2倍。
三、ConcurrentHashMap
ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成;Segment实现了ReentrantLock来实现线程安全。
1.8版本则采用CAS和synchronized来保证并发安全。