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

时间:2017-09-27 04:15:20

标签: java arraylist iterator clone

我正在尝试在构建器构造函数中复制byte []数组的ArrayList。我想将arrayLst1复制到arrayLst2。我尝试用这段代码做的:

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

但我收到以下错误:

Exception in thread "main" java.util.ConcurrentModificationException

因此Google将我引导至Iterators 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()  );

但我无法弄清楚如何逐步完成第一个array1并使用迭代器添加/复制到array2。

如何将一个ArrayList byte []复制到另一个?我确信必须有一个简单的解决方案,但我无法找到它。

编辑:声明错误实际上意味着没有声明arraylist。而不是这样说,编译器错误消息指向需要使用迭代器。

2 个答案:

答案 0 :(得分:0)

java.sourceSets["main"].java {
    srcDir("src/gen/java")
}

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

答案 1 :(得分:0)

归功于这个答案属于#Zaki Anwar Hamdani。 我在声明中犯了一个错误。

以下声明有效。

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

让我难过的是错误消息没有暗示声明的问题。对迭代器的引用让我陷入了疯狂的追逐之中。