加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Vector和ArrayDeque类

发布时间:2020-12-15 05:08:27 所属栏目:Java 来源:网络整理
导读:Vector和ArrayDeque类之间的区别是什么?我昨天读到了关于ArrayDeque的类,而我之前使用过Vector类. 解决方法 基础是: Vector实现了java.util.List,它定义了允许对元素进行基于索引的访问的容器.它还实现了接口RandomAccess,它向用户指示底层表示允许快速(通
Vector和ArrayDeque类之间的区别是什么?我昨天读到了关于ArrayDeque的类,而我之前使用过Vector类.

解决方法

基础是:

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

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

主要差异:

> Vector支持使用List.add(int index,E element)或List.addAll(int index,Collection<?extends E> c)的重载版本将元素添加到容器的中间.
> Vector支持使用remove方法从容器中间删除元素.
> Vector的set和setElementAt方法允许您进行就地元素交换(将Vector中的一个对象替换为另一个,O(1)操作).
>添加到Vector的末尾是分摊的常量时间.添加到矢量的开头或中间是线性时间操作(O(n)).
> ArrayDeque在容器的正面和背面分别添加/删除元素的常量时间(O(1)).
> ArrayDeque不允许您专门删除容器中某个位置的元素.类的各种remove,removeFirst和removeLast方法允许您更有限地删除元素.
> ArrayDeque附带了使用类的方法,如队列(peek,poll,add,addFirst)和类似堆栈(offer,push,pop,peekLast,addLast),或两者兼有(因此为什么它是Double-Ended Queue).> ArrayDeque不支持在双端队列中间添加元素.> Vector具有特殊的ListIterators,它允许您获取从容器中特定位置开始的迭代器,并且还支持添加,删除和设置元素. ArrayDeque的迭代器不支持那些额外的方法.> Vector是一个同步容器,这意味着它已经包含了为多线程环境执行同步/锁定的代码.对于ArrayDeque,如果您正在对容器进行多线程访问,则必须提供自己的同步代码.请注意,ArrayList是Vector的未同步对应物.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读