Java集合类学习-LinkedList, ArrayList, Stack, Queue, Vector

Collection数组

List安全

  在Collection的基础上引入了有序的概念,位置精确;容许相同元素。在列表上迭代一般优于索引遍历。特殊的ListIterator迭代器容许元素插入、替换,双向访问,从列表中的制定位置开始(根据index获取index位置的元素)。未实现get方法。数据结构

AbstractList字体

  实现了List中的一些方法,支持随机访问。lastIndexOf经过特殊迭代器可以制定开始位置,从后遍历的特性来实现。直接经过指定的位置,借助特殊迭代器找到。
spa

Vector线程

  实现可增加的数组。提供额外的方法来增长、删除元素,比数组操做高效。在增长数组时,会增长1倍,且初始时能够设置增加的空间大小。Vector是线程安全的,经过在方法中加入synchoronized关键字体现。
对象

Stackblog

  在Vextor的基础上引入了后进先出(LIFO)的对象堆栈。 经过添加5个操做实现:push , pop , peek , empty ,在堆栈中查找项并肯定到堆栈顶距离的 search 索引

AbstractSuquentialList接口

  扩展了AbstractList, 可是最大限度地减小了实现受连续访问数据存储支持的此接口所需的工做。经过制定迭代器的起始位置直接找到对应元素。

LinkedList

  采用链表的方式实现。

ArrayList

  采用数据实现。在增长数组时,默认为0.5倍,不是线程安全的。

Queue

  在Collection的基础上引入了队列的特性,先进先出。添加元素有两个,add和offer: add在没有可用空间时会抛出异常,offer会返回false。同poll和remove的区别。add用在链表中,offer用在队列中,前者是实现了list接口的方法,后者是实现了queue接口的方法。

  Queue与List并列,不支持按索引获取元素。

Deque

  双端队列在Queue的基础上支持在两端插入和移除元素。addLast,removeLast等对应Queue中的方法,有添加了新的方法。

 

区别区分

Vector与数组: vector实现了数组[]的动态增加。

ArrayList与Vector:(1)同步性; (2)数据增加。

ArrayList与LinkedList:(1)数据结构;(2)不一样的优点:随机访问,增删操做。

相关文章
相关标签/搜索