2017-09-27 58 views
-1

我想在構建器構造函數中複製byte []數組的ArrayList。我想將arrayLst1複製到arrayLst2。我試着用這個代碼做:聲明ArrayList的byte []數組副本的錯誤返回欺騙性錯誤消息,說使用迭代器

builder.arrayLst2.forEach(item->this.arrayLst1.add(item)); 

,但我得到了以下錯誤:

Exception in thread "main" java.util.ConcurrentModificationException 

所以谷歌使我迭代hereherehere所以我想這個代碼(以及其他變化) 。

for (Iterator itr = builder.arrayLst1.iterator(); itr.hasNext();) { 
     this.arrayLst2.add(itr.next()); 
    } 

第二行給出錯誤消息「找不到添加方法的合適方法」。

我已經沿着線嘗試:

Iterator itr = this.arrayLst.iterator();   
builder.arrayLst2.forEach(item->itr.next() ); 

,但我無法弄清楚如何逐步通過第一陣列1和使用迭代器添加/複製到數組2。

如何克隆一個ArrayList byte []到另一個?我確信必須有一個簡單的解決方案,但我找不到它。

編輯:聲明錯誤實際上意味着arraylist沒有聲明。編譯器錯誤消息指出需要使用迭代器,而不是這樣說。

+0

你可以添加arrayLst1和arrayLst2的聲明嗎? –

+0

嗨。我已經聲明瞭兩個變量,我只是沒有在代碼片段中顯示。 – dazz

+0

這就是爲什麼你被要求在代碼片段中顯示它們的原因。發佈一個完整的最小示例。您在發佈的代碼中處處都使用原始類型。不要這樣做。從Java 5開始,泛型就存在了。我們在Java 9中。 –

回答

0
this.arrayLst1 = new ArrayList<>(builder.arrayLst2); 

this.arrayLst1 = new ArrayList<>(); 
this.arrayLst1.addAll(builder.arrayLst2); 
0

感謝這個答案屬於#Zaki安瓦爾·哈姆達尼。 我在聲明中犯了一個錯誤。

以下聲明有效。

 this.flagImgs = new ArrayList <>(this.flagImageFilenames.size()); 
     builder.flagImgs.forEach(item->this.flagImgs.add(item)); 

讓我難堪的是,錯誤消息沒有暗示與聲明有關的問題。對迭代器的引用使我大發雷霆。