Methoden ArrayList clonen wirft exception

Diskutiere ArrayList clonen wirft exception im Java Basics - Anfänger-Themen Bereich.
R

realodds

Hallo, das sollte eigentlich ziemlich einfach sein, trotzdem weiß ich nicht, warum eine Exception geworfen wird.
Java:
public static ArrayList<Node> clone(final ArrayList<Node> step) {
        ArrayList<Node> arr = new ArrayList<>();
        for (Node n : step)
            arr.add(n.clone());

        return arr;
    }
Das hatte ich zuerst. Im Internet stand, man solle Iterator benutzen, das habe ich dann gemacht:

Java:
public static ArrayList<Node> clone(final ArrayList<Node> step) {
        ArrayList<Node> arr = new ArrayList<>();
        Iterator<Node> it = step.iterator();
        while (it.hasNext()) {
            arr.add(it.next().clone());
        }

        return arr;
    }
Das wirft jedoch die gleiche Exception aus.


Die Exception ist checkForComodification.

Was muss ich ändern?
 
J

JustNobody

Wird die ArrayList evtl. in einem anderen Thread verändert? Während Du durch die ArrayList iterierst kannst du die nicht verändern.

Oder wird ggf. In Node die ArrayList verändert, wenn clone() aufgerufen wird?
 
looparda

looparda

Der Iterator unterstützt es nicht die unterliegende Collection während der Iterator zu modifizieren. Benutzt du die richtige Collection für deine Anforderungen? Ansonsten hast du mit
step.listIterator(); mehr Erfolg, da er Modifikationen unterstützt.
 
Thema: 

ArrayList clonen wirft exception

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben