【问题标题】:What is the Java equivalent of C++ deque?C++ deque 的 Java 等价物是什么?
【发布时间】:2011-10-13 03:46:09
【问题描述】:

在 C++ 中我所要做的就是

#include <queue> -> including
queue<int> a; -> defining
a.push(1); ->using

但是在java中我发现使用简单的双端队列非常困难 我该怎么办...? 进一步来说, 我应该如何编码以简单地执行相同的步骤 就像我在 C++ 中所做的那样;包括,定义,使用。

更具体地说, 我想做一个双端队列以便我可以 在前或后的双端队列中添加任何整数。 并按双端队列的大小打印该双端队列中的整数

【问题讨论】:

  • 更合适的标题应该是“C++ deque 的 Java 等价物是什么”
  • “按双端队列的大小打印该双端队列中的整数”是什么意思?
  • 如果您使用 IDE,它将帮助您找到要导入的类以及如何构造代码。免费的 IDE 包括: IntelliJ CE、Netbeans 或 Eclipse

标签: java c++ queue deque


【解决方案1】:

Java 有QueueDeque 两种类型,LinkedList 等可以充当其中任何一种:

import java.util.*;
Deque<Integer> q = new LinkedList<Integer>();
q.push(1);

【讨论】:

  • 如何打印队列中的整数,就像我在队列中添加 1、2、3、4 一样,它会像 1 2 3 4 一样打印
  • 这听起来像是家庭作业。你有没有尝试过呢?显示一些代码并指出您遇到问题的地方。
【解决方案2】:

java.util.LinkedList

LinkedList<Integer> linkedList = new LinkedList<Integer>();
linkedList.add(5);
linkedList.addFirst(2); // add to front, equivalent to push()
linkedList.addLast(3); // add to end, equivalent to add()

【讨论】:

    【解决方案3】:

    当前的答案表明 Java 的 java.util.LinkedList 是 C++ 的 std::deque 的 Java 翻译。虽然LinkedList 确实有一个与std::deque 大致相当的接口,但它不提供std::deque 所提供的复杂性保证。特别是,std::deque 保证 O(1) 按索引查找(随机访问),而 LinkedList 具有 O(n) 查找。在这个意义上(有经验的 C++ 用户查看std::deque 的意义),Java 的LinkedList 一点也不像std::deque(尽管它非常像std::list)。 This thread 为“什么是 C++ 双端队列的 Java 等价物”这个问题提供了更好的答案。综上所述,标准 Java 库中没有等价物。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2011-01-10
      • 2016-07-26
      • 2010-12-07
      • 2010-11-22
      • 1970-01-01
      相关资源
      最近更新 更多