6
public void traverse(Node root){
    ArrayDeque<Node> queue = new ArrayDeque<Node>();
        queue.add(root);

    while(!queue.isEmpty()){
        Node currentNode = queue.pollFirst();   
        List<Node> nl = getChildrenfromDB(currentNode);
        queue.addAll(nl);
    }

我如何才能addAll(nl)将整个集合(List<Node>)添加到队列的前面?

4

2 回答 2

11

实际上我正在寻找同样的东西,这对我有用!

samplelist.addAll(0,items); // 0 is the index where items are added on the list
于 2014-01-08T13:41:52.047 回答
8

没有内置任何东西。但它很容易模拟 - 只需以相反的顺序迭代列表并添加元素。这样他们就会以正确的顺序排在队列中。

for (int i = list.size() - 1; i >=0; i--) {
    queue.addFirst(node);
}

其他向后迭代的方法是:

  • LinkedList的降序迭代器
  • Collections.reverse(..)

选择一个适合你的情况。

于 2011-10-30T08:20:04.640 回答