6.容器
1.Collection/Set/List的区别与联系
Collection接口: 最基本的集合接口,派生了两个子接口Set和List
Set: 无序且不可重复
List:有序可重复
2.ArrayList和LinkedList、Vector的区别
ArrayList:基于动态数组,便于随机访问。当需要增长时,ArrayList却是原来的一半
LinkedList:基于链表,便于新增和删除
Vector:使用了synchronized同步方法,线程安全。当需要增长时,Vector默认增长为原来一培
3.TreeSet和HashSet的区别
TreeSet:基于二叉树实现,数据是自动排好序的,不允许放入null值
HashSet:基于哈希表实现的,HashSet数据是无序的,只能放入一个null值
4.Map中的key不能重复,重复的话,后面的key会把前面的key替换掉
5.HashMap和Hashtable、ConcurrentHashMap的区别
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
注:ConcurrentHashMap 是 HashMap 线程安全的实现,并且逐渐取代 Hashtable 的使用,因为 Hashtable 锁的机制是对整个对象加锁,而 ConcurrentHashMap 使用的是局部锁技术,实际上就是把 Map 分成了 N 个 Seg ment,put 和 get 的时候, 都是现根据 key.hashCode()算出放到哪个 Segment 中,而这里的每个 segment 都相当于一个小的 Hashtable,性能将高于 HashTable
6.Collection 和 Collections的区别
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作