一、說說常見的集合有哪些吧?
答:Map接口和Collection接口是所有集合框架的父接口:
- Collection接口的子接口包括:Set接口和List接口
- Map接口的實現類主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等
- Set接口的實現類主要有:HashSet、TreeSet、LinkedHashSet等
- List接口的實現類主要有:ArrayList、LinkedList、Stack以及Vector等
二、HashMap與HashTable的區別?
答:線程安全、是否可null、繼承父類
- HashMap沒有考慮同步,是線程不安全的;Hashtable使用了synchronized關鍵字,是線程安全的;
- HashMap允許K/V都爲null;後者K/V都不允許爲null;
- HashMap繼承自AbstractMap類;而Hashtable繼承自Dictionary類;
三、HashMap在JDK1.7和JDK1.8中有哪些不同?
JDK1.7: 數組(Entry元素)+ 鏈表
JDK1.8: 數組(Node元素)+ 鏈表 + 紅黑樹
四、ConcurrentHashMap在JDK1.7和JDK1.8的具體實現知道嗎
JDK1.7:Segment + HashEntry
JDK1.8:Node + CAS + Synchronized