一、说说常见的集合有哪些吧?
答: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