当前位置: 首页 > 面试题库 >

为什么ArrayDeque比LinkedList更好

衡子安
2023-03-14
问题内容

我试图理解 为什么Java的ArrayDeque比Java的LinkedList更好, 因为它们都实现了Deque接口

我几乎看不到有人在他们的代码中使用ArrayDeque。如果有人对ArrayDeque的实现方式有了更多的了解,那将是有帮助的。

如果我理解它,我会更自信地使用它。对于JDK实现管理头和尾引用的方式,我不清楚。


问题答案:

链接结构可能是最糟糕的结构,要在每个元素上进行缓存未命中来进行迭代。最重要的是,它们消耗了更多的内存。

如果您需要两端的添加/删除,则ArrayDeque明显优于链接列表。对于循环队列,每个元素的随机访问也是O(1)。

链表的唯一更好的操作是在迭代过程中删除当前元素。



 类似资料:
  • 我现在想要一个数据结构,就像一个有索引的Deque。因此,它应该有O(1)在前面和后面添加和删除元素,以及O(1)基于索引访问元素。这并不难想象一个适合这种情况的设置。 ArrayDeque似乎是一个自然的选择。但是,ArrayDeque不实现List。由于底层数据结构是一个数组,是否有充分的理由不允许索引? 还有,更实用的是,有人知道有哪个图书馆在做我想做的事情吗。据我所知,Apache Com

  • 问题内容: 我目前正在开始新的应用开发。应用程序设计师坚持认为我们使用 JBoss5 是因为它“更好”。是否有人对“更好”有更广泛的定义(如果如此)? 我有在具有大量用户负载的大规模应用程序中使用 Tomcat5 和6的经验,并且它处理得很好(IMHO)。两者都将在相同的硬件条件下(如果实现很重要)在 RedHat6 上运行。 提前致谢 问题答案: 说任何工具或框架都只是“更好”是可笑的。它总是取

  • 问题内容: 一直有人告诉我,在调试应用程序时,JavaScript的方法优于简单的使用方法。为什么是这样?有没有一个很好的例子,有人可以指出我哪里是更好的选择? 问题答案: 正在阻止 在非调试环境中不容易被抑制 通常可以很好地格式化对象并允许遍历它们 日志记录语句通常具有交互式的代码指针,该代码发出了日志记录语句 您一次只能查看一个以上的消息 可以通过直观的格式设置不同的日志记录级别

  • 主要内容:1 ArrayDeque的概述,2 ArrayDeque的API方法,3 ArrayDeque的源码解析,3.1 主要类属性,3.2 构造器与初始容量,3.3 添加的方法,3.4 移除的方法,3.5 获取的方法,3.6 其他方法,4 ArrayDeque和LinkedList的区别,5 性能对比基于JDK1.8对Java中的ArrayDeque集合的源码进行了深度解析,包括各种方法的底层实现,在最后给出了ArrayDeque和LinkedList的对比案例以及使用建议。 1 Array

  • 问题内容: 我已经看到了两种方式,但是哪种方式更适合Python? 哪种方法被认为是更好的Python? 问题答案: 第二个选项是Pythonic,原因有两个: 它是 一个 运算符,转换为一个字节码操作数。另一行是真的; 两个操作员。 碰巧的是,Python会 优化 后一种情况 并转换成任何情况,但这是CPython编译器的实现细节。 这接近于您在英语中使用相同逻辑的方式。

  • 我不知道我错过了什么: 输出结果是: 尺码1000 尺码25,000 ArrayList差异:3 LinkedList差异:2 尺码3,125,000 ArrayList差异:104 LinkedList差异:1254