【问题标题】:Creating an array of Deques创建一个 Deque 数组
【发布时间】:2017-08-07 16:20:11
【问题描述】:

我需要创建和使用一个 Deque 数组,如下所示

Deque<Point>[] saved = new LinkedList<Point>[12];

此代码会导致错误,因为 Java 不允许您创建 Deques 的通用数组。有没有办法设置 Deques 数组,以便我可以在需要时访问每个单独的 Deque?

我也试过了:

Deque<Point>[] saved;
//....
for(int i = 0;i<12;i++)
{
     saved[i] = new LinkedList<Point>;
}

返回 NullPointerException。如何创建这个数组?

【问题讨论】:

  • @Jens 恐怕不行,我得到同样的“无法创建 Deque 的通用数组”
  • 你可以做Deque&lt;Point&gt;[] saved = new Deque[12]; ....

标签: java arrays deque


【解决方案1】:

您需要将saved 初始化为ArrayList

// Note that saved has a size defined at construction, 
// which makes this efficient. 
final List<Deque<Point>> saved = new ArrayList<Deque<Point>>(12);
for (int i = 0; i < 12; i++) {
   saved.add(new LinkedList<Point>());
}

【讨论】:

  • 恐怕不行,我也收到同样的抱怨,无法创建 Deque 的通用数组
  • 啊,当然。在构造时定义大小的ArrayList 应该可以正常工作。更新了答案。
  • @imulsion 该代码中没有创建数组。哪一行代码给了你这个错误?
  • 更新后的解决方案运行良好。非常感谢您的帮助。
【解决方案2】:

你为什么不使用ArrayDeque

你可以用这个:

ArrayDeque arr = new ArrayDeque<Point>(12);

或者这个:

LinkedList l = new LinkedList<Point>();
ArrayDeque arr = new ArrayDeque(l);

这里有很好的教程Java.util.ArrayDeque Class

【讨论】:

  • 我也在考虑同样的事情。 ArrayDeque 是一种使用数组的快速双端队列操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多