2017-09-27 1 views
-1

ビルダーコンストラクタ内でbyte []配列のArrayListをコピーしようとしています。 arrayLst1をarrayLst2にコピーしたい。私は、このコード(および他のバリエーション)を試してみましたので、Googleはイテレータherehereに私をリードし、herebyte []配列コピーのArrayListを宣言するエラーにより、イテレータを使用する欺瞞的エラーメッセージが返される

Exception in thread "main" java.util.ConcurrentModificationException 

:私はこのコードでそれをやってみました:

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

が、私は次のエラーを得ました。

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

2行目は、「追加メソッドには適切なメソッドが見つかりません」というエラーメッセージが表示されます。

私はの線に沿って試してみました:

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

が、私は最初の配列1をステップと配列2にコピー/追加するイテレータを使用する方法を見つけ出すことはできません。

ArrayListバイト[]を別のクラスに複製するにはどうすればよいですか?私は簡単な解決策がなければならないと確信していますが、私はそれを見つけることができません。

編集:宣言エラーは、arraylistが宣言されていないことを効果的に意味しました。これを言うのではなく、コンパイラのエラーメッセージはイテレータを使用する必要があることを指摘しています。この回答へ

+0

arrayLst1とarrayLst2の宣言を追加できますか? –

+0

こんにちは。私は両方の変数を宣言しましたが、コードスニペットではこれを示していません。 – dazz

+0

あなたがコードスニペットにそれらを表示するように求められているのは、まさにその理由です。完全な最小限の例を投稿してください。投稿されたコードのどこでも生の型を使用しています。それをしないでください。私たちはJava 9に属しています。 –

答えて

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

または

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

クレジットは、アンワルHamdaniを#Zakiに属します。 宣言に誤りがありました。

次の宣言が機能します。

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

私が困惑したのは、エラーメッセージが宣言の問題を示唆していないということでした。反復子への参照は、私に野生のガチョウの追跡をどこにも送らなかった。

関連する問題