java容器详解(二)Collection与Collections

Collection 表示一组被一个或多个规则约束的对象,这些对象也称为 collection 的元素。一些 collection 容许有重复的元素,而另外一些则不容许。一些 collection 是有序的,而另外一些则是无序的。Collections是Collection的工具类,定义了对Collection的经常使用操做。Collection是线性数据类型的根接口,定义了最基本的操做(增、删、改、查、取得iterator、转化为数组等)。 java

1.List :保存一组元素。它能够取得Collection的iterator,也能够取得List特有的ListIterator.ListIterator是Iterator的子接口,它与Iterator类似,但提供了向前移动能力(Iterator只能向后移动)。List的retainAll方法用于与目的Collection取交集。 算法

ArrayList使用线性存储结构(数据结构中叫线性表),它的随机访问速度较快(由于它的底层是数组,能够经过数组的index直接找到元素),但插入或删除数据的速度较慢. 数组

LinkedList使用链式存储结构(数据结构中叫链表,sun jdk1.6中使用的是双向链表),它的随机访问速度较慢(须要从第一个元素开始向下或向上遍历,直到找到特定元素),但插入或删除速度较快。另外LinkedList能够直接实现queue或stack,由于它已经封装了相应的方法。 安全

Vector与ArrayList类似,但它的操做是线程安全的,因此通常用于多线程状况下。 数据结构

2.Set与List类似,但Set中的元素不能重复。HashSet经过使用哈希算法,查找速度较快(底层数据结构为HashMap)。TreeSet保存的元素是通过排序的(底层数据结构为红黑树)。LinkedHashSet使用哈希算法保证查找速度,它以元素的插入顺序保存元素(底层数据结构为LinkedHashMap)。 多线程

3.Queue 由于LinkedList已经实现了Queue行为的方法,因此能够将一个LinkedList转化为Queue: 工具

Queue<Integer> queue = new LinkedList<Integer>();

Queue是先进行出的,而PriorityQueue经过设置优先级以使须要的元素"先出". spa

4.Collections是Collection的工具类,定义的操做以下: 线程

(1)addAll:与Collection的addAll方法相同,但这个方法在大多数状况下具备较快的速度。 code

(2)其余方法没什么好说的了,若是须要请参看jdk文档及源码。

相关文章
相关标签/搜索