将Collection(ArrayList)添加到ConcurrentQueue

时间:2015-07-21 20:29:23

标签: java arraylist linked-list queue

我有一段代码可以构建一个自定义类类型的ArrayList作为函数的输出。然后,我尝试将此ArrayList添加(Concot)到ConcurrentLinkedDeque。似乎发生的是ConcurrentLinkedDeque最终包含ArrayList中最后一个元素的ArrayList.size()。

我已经做了各种检查,看看ArrayList是否正确构建并包含正确的元素,但似乎没有看到这个问题。将收藏添加到ConcurrentLinkedDeque是否有任何特殊之处?

2 个答案:

答案 0 :(得分:1)

你可以尝试这样的事吗

public class ConcurrentLDTrial{
    public static void main(String[] args) {
        List<Integer> a = new ArrayList<Integer>();
        a.add(2);
        a.add(3);
        ConcurrentLinkedDeque<Integer> cd = new ConcurrentLinkedDeque<Integer>(a);
        System.out.println(cd);
    }
}

我得到的输出是[2,3],这是预期的。

将数据结构适当地转换为自定义类。

答案 1 :(得分:0)

现在似乎有用了。我发现了一个涉及内存分配的bug。

addall(Collection)适用于ConcurrentLinkedDeque。