2015-07-21 132 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。