java容器详解(二)Collection与Collections

java容器详解(二)Collection与Collections_第1张图片

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

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通过设置优先级以使需要的元素"先出".

4.Collections是Collection的工具类,定义的操作如下:

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

(2)其他方法没什么好说的了,如果需要请参看jdk文档及源码。


你可能感兴趣的:(java,Collection,container,JAVA容器)