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

上一篇下一篇

猜你喜欢

热点阅读