首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量和ArrayDeque类

向量和ArrayDeque类
EN

Stack Overflow用户
提问于 2012-05-09 02:19:09
回答 3查看 1.8K关注 0票数 3

向量类和ArrayDeque类有什么不同?我昨天读到了ArrayDeque类,而我之前用过Vector类。

EN

回答 3

Stack Overflow用户

发布于 2012-05-09 02:30:14

基本情况是:

Vector实现了java.util.List,它定义了允许基于索引访问元素的容器。它还实现了interface RandomAccess,这向用户表明底层表示允许快速(通常是O(1))访问元素。

ArrayDeque实现了java.util.Deque,它定义了一个容器,支持从容器的开头和结尾快速添加和删除元素。

主要区别:

  • Vector支持将元素添加到容器的中间,使用List.add(int index, E element)或method.
  • Vector's的重载版本支持从容器的中间移除元素,使用remove operation).
  • adding setsetElementAt方法允许你做一个就地的元素交换(用另一个对象替换Vector中的一个对象,一个O(1) Vector到一个Vector的末尾是分期不变的。在向量的开头或中间添加线性时间操作(O(n)).
  • ArrayDeque具有分期不变时间(O(1))添加/删除container.
  • ArrayDeque前面和后面的元素不允许您专门删除容器中某个位置的元素。类的各种removeremoveFirstremoveLast方法允许您使用更有限的元素removal.
  • ArrayDeque附带了使用类的方法,如队列(peekpolladdaddFirst)和堆栈(offerpush、D46、D47、D48),或者两者兼而有之(因此Double-Ended Queue).
  • ArrayDeque不支持将元素添加到deque.
  • Vector的中间)具有特殊的ListIterators,它允许您获得在容器中特定位置开始的迭代器,还支持添加、删除和设置元素。ArrayDeque的迭代器不支持那些额外的methods.
  • Vector是一个同步容器,这意味着它已经包含了为多线程环境执行同步/锁定的代码。对于ArrayDeque,如果您对容器进行多线程访问,则必须提供自己的同步代码。请注意,与Vector.

相比,ArrayList是一个非同步的对应物

票数 9
EN

Stack Overflow用户

发布于 2012-05-09 02:26:15

有几点不同:

  • 矢量实现List接口,而ArrayDeque实现Queue接口。这些是不同的接口,提供了不同的操作集: thread-safe;
  • Vector是您的普通容器,而*Queue更多地面向多线程应用程序(生产者/消费者模式),因为它具有诸如polloffer等方法;
  • 向量线程安全(它具有内置的同步),ArrayDeque从1.0版开始不再包含在ArrayDeque中,从1.6版开始ArrayDeque。
票数 4
EN

Stack Overflow用户

发布于 2021-11-12 14:49:12

根据Oracle文档,向量和堆栈是遗留类,您应该使用Arraylist和ArrayDeque。https://docs.oracle.com/javase/tutorial/collections/implementations/index.html https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html说“(这个类大体上等同于向量,除了它是不同步的。)”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10504187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档