N
na-oma
Gast
Meine Aufgabe lautet:
nun: frisch ans Werk:
in der Zeile mit (*) bekomme ich:
Inzwischen kann ich mir das erklären:
-die SubListe ist ja immernoch "backed" von der originalen.
-Wenn ich dann removeAll mache, wird mittels Iterator auf der originalen Liste iteriert, diese wird durch löschung verändert
-*bumm*
Der Einzeiler durch den alles funktioniert, ist oben auskommentiert. Coole Lösung, hab ich in der API gefunden.
Allerdings frage ich mich: wie kann man die Aufgabe lösen, so wie sie gestellt ist? Einer ne Idee?
-Die sublist irgendwie kopieren wäre natürlich möglich...allerdings is das doch doof
Create a class, then make an initialized array of objects of your class. Fill a List from your array. Create a subset of your List by using subList( ), then remove this subset from your List by using removeAll( ).
nun: frisch ans Werk:
Code:
import java.util.*;
class MyClass { }
public class Ueb22 {
public static void main(String[] args) {
MyClass[] mca = {new MyClass(), new MyClass(), new MyClass()};
List al = new ArrayList();
for (int i = 0; i < mca.length; i++) {
al.add(mca[i]);
}
System.out.println(al);
//al.subList(0, 1).clear(); //statt subList und removeAll
List sl = al.subList(0, 1);
al.removeAll(sl); // (*)
System.out.println(al);
}
}
in der Zeile mit (*) bekomme ich:
Exception in thread "main" java.util.ConcurrentModificationException
Inzwischen kann ich mir das erklären:
-die SubListe ist ja immernoch "backed" von der originalen.
-Wenn ich dann removeAll mache, wird mittels Iterator auf der originalen Liste iteriert, diese wird durch löschung verändert
-*bumm*
Der Einzeiler durch den alles funktioniert, ist oben auskommentiert. Coole Lösung, hab ich in der API gefunden.
Allerdings frage ich mich: wie kann man die Aufgabe lösen, so wie sie gestellt ist? Einer ne Idee?
-Die sublist irgendwie kopieren wäre natürlich möglich...allerdings is das doch doof