java常见基础面试题(二)

一、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来保证并发安全。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容