您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么要在堆栈上使用Deque?

为什么要在堆栈上使用Deque?

一方面,在继承方面更明智。在我看来,Stack扩展的事实Vector真的很奇怪。在Java的早期,继承被IMO过度使用-这Properties是另一个例子。

对我而言,您引用的文档中的关键词是 一致的Deque公开了一组操作,这些操作都与从集合的开头或结尾获取添加/删除项,进行迭代等有关-仅此而已。故意没有办法按位置访问元素,这 是因为 它是的子类而Stack暴露出来。 __Vector

哦,而且也Stack没有接口,因此,如果您知道需要Stack操作,您最终将提交到特定的具体类,这通常不是一个好主意。

也如注释中指出的那样,StackDeque具有反向迭代顺序:

Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(new ArrayList<>(stack)); // prints 1, 2, 3


Deque<Integer> deque = new ArrayDeque<>();
deque.push(1);
deque.push(2);
deque.push(3);
System.out.println(new ArrayList<>(deque)); // prints 3, 2, 1

JavaDocs forDeque.iterator()也对此进行了说明:

以适当的顺序返回此双端队列中的元素的迭代器。元素将按照从头(头)到后(尾)的顺序返回。

其他 2022/1/1 18:16:36 有429人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶