声明ArrayList的byte []数组副本的错误返回欺骗性错误消息,说使用迭代器

问题描述:

我想在构建器构造函数中复制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中。 –

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

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

感谢这个答案属于#Zaki安瓦尔·哈姆达尼。 我在声明中犯了一个错误。

以下声明有效。

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

让我难堪的是,错误消息没有暗示与声明有关的问题。对迭代器的引用使我大发雷霆。