1. 说说常见的集合有哪些吧?
答:Map 接口和Collection接口是所有集合框架的父接口
1. Collection接口的子接口包括:Set接口和List接口
2. Map 接口的实现类主要有:HashMap、TreeMap、HashTable、ConcurrentHashMap 以及Properties等
3. Set接口的实现类主要有:HashMap TreeSet LinkedHashSet等
4.List接口的实现类主要有:ArrayList、LinkedList、Stack 以及Vector等
2. HashMap 与HashTable的区别?
1. HashMap没有考虑同步,是线程不安全的;Hashtable使用了synchronized关键字 是线程安全的;
2.HashMap允许K/V都是null,后者K/V都不允许为null;
3. HashMap继承自AbstractMap类;而Hashtable继承自Dictionary类
3. ArrayList 和 Vector 区别?
1) 同步性:Vector是线程安全的(同步的),而ArrayList是线程不安全的;
2)数据增长:当需要增长时,Vector默认增长一倍,而ArrayList却是一半。
4. List Map Set 三个接口,存取元素时,各有什么特点?
List以特点次序来持有元素时,可有重复元素,Set无法拥有重复元素,每部排序。Map保存key-value值,value可多值。
5. set 里的元素不能重复。那么用什么方法来区分重复与否呢?
Set里元素是不能重复的,用equals() 方法区分重复与否。覆盖equals() 方法用来判断对象的内容是否相同,而"==" 来判断地址是否相等,用来确定引用值是否是同一对象。
6. HashMap 和 Hashtale的区别?
二者都实现Map接口,是将唯一键映射到特点的值上,主要区别与:
1. HashMap没有排序,允许一个null键和和多个null值,而HashMap不允许。
2. HashMap把HashMap的contains方法去掉了,改成containvalue和containKey,因为contains方法容易让人引起误解。
3. Hashtable继承自Dictonary类,HashMap是java1.2引进的Map接口的实现。
4. Hashtable的方法是同步的,而HashMap不是,在多个线程访问Hashtable时,不需要为它的方法实现同步,而HashMap就必须为之提供外同步,
7. Collection 和 Collections的区别
Collection是java.uitl 下的接口,他是各种集合的父接口,继承于它的接口主要有set 和list;Conllecitons是个java.util下的类,是针对集合的帮助类,提供一系列静态方法对各种集合的搜索,排序,线程安全化等操作。
线程安全的map
1. synchronizedMap
这种是直接使用工具类里面的方法创建SynchronizedMap, 把传入进行的HashMap对象进行了包装同步而已,看出SynchronizedMap的实现方式是加了对象锁,每次对HashMap的操作,都要先获取mutex的对象锁才能进入,所以性能也不会比HashTable好到那里去,也不建议使用。
2. ConcurrentHashMap
这个也是最推荐使用的线程安全的Map,也是实现方式最复杂的一个集合,每个版本的实现方式也不一样,在jdk8之前是使用分段加锁的一个方式,分成16个桶。每次只加锁其中一个桶,而在jdk8之后又加入了红黑树和CAS算法来实现
原文链接 java集合必会14问
8. 遍历List
```
```