import java.util.List; import java.util.ArrayList; import java.util.Collections; class TestSousListes { public static void main(String args[]) { List l = new ArrayList(); for (int i=0; i<10; i++) l.add(i); List sl = l.subList(2,6); out("original",l,sl); sl.add(2,30); out("sl.add(2,30)",l,sl); sl.remove(4); out("sl.remove(4)",l,sl); Collections.sort(sl); out("sort(sl)",l,sl); l.add(3,50); out("l.add(3,50)",l,sl); } public static void out(String mess,List l,List sl){ System.out.println(mess); System.out.println("l="+l); System.out.println("sl="+sl); } } /* exemple de résultat => java TestSousListes original l=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] sl=[2, 3, 4, 5] sl.add(2,30) l=[0, 1, 2, 3, 30, 4, 5, 6, 7, 8, 9] sl=[2, 3, 30, 4, 5] sl.remove(4) l=[0, 1, 2, 3, 30, 4, 6, 7, 8, 9] sl=[2, 3, 30, 4] sort(sl) l=[0, 1, 2, 3, 4, 30, 6, 7, 8, 9] sl=[2, 3, 4, 30] l.add(3,50) l=[0, 1, 2, 50, 3, 4, 30, 6, 7, 8, 9] Exception in thread "main" java.util.ConcurrentModificationException at java.util.SubList.checkForComodification(AbstractList.java:852) at java.util.SubList.listIterator(AbstractList.java:782) at java.util.AbstractList.listIterator(AbstractList.java:345) at java.util.SubList.iterator(AbstractList.java:778) at java.util.AbstractCollection.toString(AbstractCollection.java:442) at java.lang.String.valueOf(String.java:1910) at java.lang.StringBuffer.append(StringBuffer.java:361) at TestSousListes.out(TestSousListes.java:25) at TestSousListes.main(TestSousListes.java:19) */