【问题标题】:Add Collection (ArrayList) to ConcurrentQueue将集合(ArrayList)添加到 ConcurrentQueue
【发布时间】:2015-07-21 20:29:22
【问题描述】:
我有一段代码构建了一个自定义类类型的 ArrayList 作为函数的输出。然后,我尝试将此 ArrayList 添加到 ConcurrentLinkedDeque。似乎发生的事情是 ConcurrentLinkedDeque 最终包含 ArrayList.size() 中最后一个元素的 ArrayList。
我已经进行了各种检查以查看 ArrayList 是否正确构建并包含正确的元素,但似乎没有看穿这个问题。将集合添加到 ConcurrentLinkedDeque 有什么特殊之处吗?
【问题讨论】:
标签:
java
arraylist
linked-list
queue
【解决方案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] ,这是预期的。
将数据结构适当地转换为您的自定义类。
【解决方案2】:
现在看来可以了。我发现了一个涉及内存分配的错误。
addall(Collection) 适用于 ConcurrentLinkedDeque。