什么是Java等价的C ++ deque?

时间:2011-07-26 06:24:38

标签: java c++ queue deque

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

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

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

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

3 个答案:

答案 0 :(得分:9)

Java同时具有QueueDeque类型,其中LinkedList可以作为其中之一:

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

答案 1 :(得分:8)

目前的答案表明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 ++ deque的Java等价物”提供了更好的答案。总而言之,标准Java库中没有等效的东西。

答案 2 :(得分:-1)

请看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()