Java中各种常用数据结构的使用(Vector、Stack、LinkedList)
2016-09-06 12:57
603 查看
一、Vector
1.1Vector的介绍
Vector 是矢量队列,继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。Vector类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,
Vector的大小可以根据需要增大或缩小,以适应创建
Vector后进行添加或移除项的操作。
Vector 继承了AbstractList,实现了List;所以,它是一个队列,支持相关的添加、删除、修改、遍历等功能。
Vector 实现了RandmoAccess接口,即提供了随机访问功能。RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在Vector中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。
Vector 实现了Cloneable接口,即实现clone()函数。它能被克隆。
和ArrayList不同,Vector中的操作是线程安全的。
1.2Vector的字段及构造函数
protected int capacityIncrement 向量的大小大于其容量时,容量自动增加的量。 protected int elementCount Vector 对象中的有效组件数。 protected Object[] elementData 存储向量组件的数组缓冲区。
Vector共有4个构造函数 // 默认构造函数 Vector() // capacity是Vector的默认容量大小。当由于增加数据导致容量增加时,每次容量会增加一倍。 Vector(int capacity) // capacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值。 Vector(int capacity, int capacityIncrement) // 创建一个包含collection的Vector Vector(Collection<? extends E> collection)1.3Vector的常用方法
boolean add(E e) 将指定元素添加到此向量的末尾。 void add(int index, E element) 在此向量的指定位置插入指定的元素。 boolean addAll(Collection<? extends E> c) 将指定 Collection 中的所有元素添加到此向量的末尾,按照指定 collection 的迭代器所返回的顺序添加这些元素。 boolean addAll(int index, Collection<? extends E> c) 在指定位置将指定 Collection 中的所有元素插入到此向量中。 void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加 1。 int capacity() 返回此向量的当前容量。 void clear() 从此向量中移除所有元素。 boolean contains(Object o) 如果此向量包含指定的元素,则返回 true。 boolean containsAll(Collection<?> c) 如果此向量包含指定 Collection 中的所有元素,则返回 true。 E firstElement() 返回此向量的第一个组件(位于索引 0) 处的项)。 E get(int index) 返回向量中指定位置的元素。 boolean isEmpty() 测试此向量是否不包含组件。 E lastElement() 返回此向量的最后一个组件。 int lastIndexOf(Object o) 返回此向量中最后一次出现的指定元素的索引;如果此向量不包含该元素,则返回 -1。 int lastIndexOf(Object o, int index) 返回此向量中最后一次出现的指定元素的索引,从 index 处逆向搜索,如果未找到该元素,则返回 -1。 E remove(int index) 移除此向量中指定位置的元素。 boolean remove(Object o) 移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。 boolean removeAll(Collection<?> c) 从此向量中移除包含在指定 Collection 中的所有元素。 void removeAllElements() 从此向量中移除全部组件,并将其大小设置为零。 boolean removeElement(Object obj) 从此向量中移除变量的第一个(索引最小的)匹配项。 void removeElementAt(int index) 删除指定索引处的组件。 E set(int index, E element) 用指定的元素替换此向量中指定位置处的元素。 void setElementAt(E obj, int index) 将此向量指定 index 处的组件设置为指定的对象。
二、Stack
2.1Stack的介绍
Stack类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类
Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的
peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。
2.2Stack的常用方法
boolean empty() 测试堆栈是否为空。 E peek() 查看堆栈顶部的对象,但不从堆栈中移除它。 E pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。 E push(E item) 把项压入堆栈顶部。 int search(Object o) 返回对象在堆栈中的位置,以 1 为基数。
三、LinkedList
除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾get、remove 和insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。此类实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。
所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。
注意,此实现不是同步的。
相关文章推荐
- Java 集合系列之 List总结(LinkedList, ArrayLis,vector,stack等使用场景和性能分析)
- JAVA中的数据结构——集合类(线性表:Vector、Stack、LinkedList、set接口;键值对:Hashtable、Map接口<HashMap类、TreeMap类>)
- Java _ JDK _ Arrays, LinkedList, ArrayList, Vector 及Stack
- Java ArrayList、LinkedList和Vector的使用及性能分析
- Java常用面试题13 ArrayList、Vector、LinkedList 三者的区别?
- java的list几种实现方式的效率(ArrayList、LinkedList、Vector、Stack),以及 java时间戳的三种获取方式比较
- Java 常用数据结构深入分析(Vector、ArrayList、List、Map)
- java进阶(4)集合类:ArrayList和 LinkedList,Vector 和stack,HashMap的基本用法
- Java中 ArrayList、Vector和LinkedList 的使用和详解(转)
- Java使用Arrays、ArrayList、LinkedList、Vector实现插入查询性能分析
- 浅析Java中的集合包(ArrayList,LinkedList,Vector, Stack,HashSet,TreeSet,HashMap,TreeMap)
- java小练习-使用LinkedList模拟一个堆栈或队列数据结构
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
- java 使用LinkedList模拟一个堆栈或者队列数据结构
- java的list几种实现方式的效率(ArrayList、LinkedList、Vector、Stack),以及 java时间戳的三种获取方式比较
- [技术天地] Java 常用数据结构深入分析(Vector、ArrayList、List、Map)
- java中使用LinkedList实现stack机制
- 【Java学习】使用LinkedList 模拟一个堆栈或者队列数据结构
- JAVA学习第三十五课(常用对象API)—Vector、LinkedList、ArrayList集合演示
- java中关于ArrayList,LinkedList,HashSet,Vector,TreeSet的区别和使用