List:
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。ArrayList,LinkedList是不同步的,而Vestor是同步的。
ArrayList是List的子类,允许存放重复元素,有序。集合中元素被访问的顺序取决于集合的类型。如果对 ArrayList进行访问,迭代器将从索引0开始,每迭代一次,索引值加1(查询快)
LinkedList是一种可以在任何位置进行高效地插入和删除操作的有序序列。允许null元素,LinkedList使用双向链表实现存储(增删改快)
VectorVector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差(安全,性能差)
Set:
HashSet是Set接口的一个子类,主要的特点是:里面不能存放重复元素,而且采用散列的存储方法,所以没有顺序。这里所说的没有顺序是指:元素插入的顺序与输出的顺序不一致。不是同步的,集合元素可以是null,但只能放入一个null
TreeSet:有序,
LinkedHashSet:当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素。
LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。
Map:
TreeMap:有序
Hashtable:单向链的二维数组,value不能为空,线程安全的,所有方法均用synchronized修饰
与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空(安全慢)
HashMap:可以放入空值,按插入的顺序存储,线程不安全,最多只允许一条记录的键为Null;允 许多条记录的值为 Null;
LinkedHashMap:存了记录的插入顺序,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列,像连接池中可以应 用。
ConcurrentHashMap:线程安全的,用于替代HashTable,采用分段加锁的方式实现,提升了效率