本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack ”Java集合详解系列“是我在完成Java基础篇的系列博客后准备开始写的新系列。 在这个分类中,将会写写Java中的集合。集合是Java中非常重要而且基础的内容,因为任何数据必不可少的就是该数据是如何存储的,集合的作用就是以一定的方式组织、存储数据。
一,线程安全性 Vector、Stack:线程安全 ArrayList、LinkedList:非线程安全 二,实现方式 LinkedList:双向链表 ArrayList,Vector,Stack:数组 三,容量扩展方面 由于ArrayList和Vector(Stack继承自Vector,只在Vector的基础上添加了几个Stack相关的方法,故之后不再对Stack做特别的说明)使用数组实现,当数组长度不够时,其内部会创...
// public Enumeration<E> elements() {// return new Enumeration<E>() {// int count = 0;/// public boolean hasMoreElements() {// return count < elementCount;// }/// public E nextElement() {// synchronized (Vector.this) {// if (count < elementCount) {// return elementData(count...
总结来说,虽然Stack是基于Vector实现的,但它的目标更明确,即作为线程安全的栈来使用,而Vector则是一个功能更为全面且同样线程安全的动态数组容器。在实际应用中,若只需要栈行为,优先考虑使用Stack;如果需要的是一个能够灵活增删元素且线程安全的列表,则应选择Vector或其非线程安全版本ArrayList配合适当的同步机制。
Java集合详解1:ArrayList,Vector与Stack 本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack 《Java集合详解系列》是我在完成夯实Java基础篇的系列博客后准备开始写的新系列。 这些文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看...
Stack 是栈,它继承于Vector。它的特性是:先进后出(FILO, First In Last Out)。 二、性能测试 在对ArrayList、LinkedList、Vector、Stack进行比较之前,我们先来对他们进行一个性能测试,结合源码和测试结果来对ArrayList、LinkedList、Vector、Stack进行详细的分析。
之所以把这三个集合类放在一起讲解,是因为这三个集合类的底层都是数组实现(Stack继承自vector)并且比较常用。 后面还会另外讲底层是链表实现的linkedlist和queue; 今天我们来探索一下ArrayList和Vector,以及Stack的源码 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech ...
在对ArrayList、LinkedList、Vector、Stack进行比较之前,我们先来对他们进行一个性能测试,结合源码和测试结果来对ArrayList、LinkedList、Vector、Stack进行详细的分析。 得到的结果如下 根据结果,可以很明显的看出ArrayList、LinkedList、Vector、Stack的性能有很大的区别。
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 (LinkedList是双向链表,有next也有previous) 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
Stack java中栈的实现 是Vector 的子类 栈的相关操作应该由 Deque 接口来提供,推荐使用 Deque 的子类 ArrayDeque 代替 Stack。使用 Deque 接口来实现栈的功能有以下好处: 1.速度比 Stack 快 这个类作为栈使用时可能比 Stack 快,作为队列使用时可能比 LinkedList 快。因为原来的 Java 的 Stack 继承自 Vector,而 ...