2017-09-27 7 views
-1

J'essaie de copier une matrice ArrayList de byte [] dans un constructeur de générateur. Je veux copier arrayLst1 à arrayLst2. J'ai essayé de le faire avec ce code:Erreur lors de la déclaration d'une copie ArrayList de byte [] array renvoyant un message d'erreur trompeur indiquant l'utilisation de l'itérateur

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

mais j'obtenu l'erreur suivante:

Exception in thread "main" java.util.ConcurrentModificationException 

Alors Google me conduire à itérateurs here, here et here donc j'ai essayé ce code (et d'autres variations) .

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

La deuxième ligne donne le message d'erreur "aucune méthode appropriée n'a été trouvée pour la méthode add."

J'ai essayé le long des lignes de:

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

mais je ne peux pas comprendre comment la première étape par array1 et utiliser iterator pour ajouter/copie à matrice2. Comment puis-je copier un octet ArrayList [] vers un autre? Je suis sûr qu'il doit y avoir une solution facile, mais je ne peux pas le trouver. Edit: L'erreur de déclaration signifiait effectivement que l'énumérateur n'était pas déclaré. Plutôt que de le dire, le message d'erreur du compilateur indiquait qu'il fallait utiliser un itérateur.

+0

Pouvez-vous ajouter la déclaration de arrayLst1 et arrayLst2? –

+0

Bonjour. J'ai déclaré les deux variables, je n'ai juste pas montré cela dans l'extrait de code. – dazz

+0

C'est précisément la raison pour laquelle on vous demande de les montrer dans l'extrait de code. Publier un exemple minimal complet. Vous utilisez des types bruts partout dans le code affiché. Ne fais pas ça. Les génériques existent depuis Java 5. Nous sommes à Java 9. –

Répondre

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

ou

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

crédit à cette réponse appartient à #Zaki Anwar Hamdani. J'ai fait une erreur dans la déclaration.

La déclaration suivante fonctionne. Ce qui m'a stupéfié, c'est que les messages d'erreur ne faisaient pas allusion à un problème avec la déclaration. La référence aux Iterators m'a envoyé sur une chasse aux oies sauvage nulle part.