向量类和ArrayDeque类有什么不同?我昨天读到了ArrayDeque类,而我之前用过Vector类。
发布于 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 set和setElementAt方法允许你做一个就地的元素交换(用另一个对象替换Vector中的一个对象,一个O(1) Vector到一个Vector的末尾是分期不变的。在向量的开头或中间添加线性时间操作(O(n)).ArrayDeque具有分期不变时间(O(1))添加/删除container.ArrayDeque前面和后面的元素不允许您专门删除容器中某个位置的元素。类的各种remove、removeFirst和removeLast方法允许您使用更有限的元素removal.ArrayDeque附带了使用类的方法,如队列(peek、poll、add、addFirst)和堆栈(offer、push、D46、D47、D48),或者两者兼而有之(因此Double-Ended Queue).ArrayDeque不支持将元素添加到deque.Vector的中间)具有特殊的ListIterators,它允许您获得在容器中特定位置开始的迭代器,还支持添加、删除和设置元素。ArrayDeque的迭代器不支持那些额外的methods.Vector是一个同步容器,这意味着它已经包含了为多线程环境执行同步/锁定的代码。对于ArrayDeque,如果您对容器进行多线程访问,则必须提供自己的同步代码。请注意,与Vector.相比,ArrayList是一个非同步的对应物
发布于 2012-05-09 02:26:15
有几点不同:
List接口,而ArrayDeque实现Queue接口。这些是不同的接口,提供了不同的操作集: thread-safe;*Queue更多地面向多线程应用程序(生产者/消费者模式),因为它具有诸如poll、offer等方法;发布于 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说“(这个类大体上等同于向量,除了它是不同步的。)”
https://stackoverflow.com/questions/10504187
复制相似问题