2015-07-21 90 views
1

我有一段代码将一个自定义类类型的ArrayList构建为函数的输出。然后,我试图将(Array)这个ArrayList添加到ConcurrentLinkedDeque。看起来会发生的是,ConcurrentLinkedDeque最终包含了ArrayList中最后一个元素的ArrayList.size()。将Collection(ArrayList)添加到ConcurrentQueue

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

回答

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],这是预期。

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

0

它现在似乎工作。我发现了一个涉及内存分配的错误。

addall(Collection)适用于ConcurrentLinkedDeque。