svoid testMoreEfficientCopyOnWriteList() { new MoreEfficientCopyOnWriteList l; var it = l.iterator(); l.add(5); assertEquals(ll(), asList(it)); it = l.iterator(); l.add(0, 10); assertEquals(ll(5), asList(it)); assertEquals(ll(10, 5), asList(l.iterator())); // make sure this doesn't take O(n^2) time time "My list" { repeat 20000 { l.add(0); } } // ...while this does new CopyOnWriteArrayList l2; time "Their list" { repeat 20000 { l2.add(0); } } }