1 class SimpleLoop { 2 Object[] elements; 3 4 class Iterator { 5 int idx = 0; 6 7 Object next() { 8 return elements[idx++]; 9 } 10 } 11 12 Iterator iterator() { 13 return new Iterator(); 14 } 15 16 // based on java.util.ImmutableCollections$SetN::toArray 17 Object[] toArray(int size) { 18 Object[] array = new Object[size]; 19 Iterator it = iterator(); 20 for (int i = 0; i < size; i++) { array[i] = it.next(); } 21 return array; 22 } 23 24 public static void main(String[] args) { 25 SimpleLoop kase = new SimpleLoop(); 26 27 int sz = 1024; 28 kase.elements = new Object[sz]; 29 for (int i=0; i< sz; ++i ) kase.elements[i] = new Object(); 30 31 Object[] results = null; 32 for (int i = 0; i < 1_000_000; ++i) { 33 results = kase.toArray(24); 34 } 35 36 for (int i =0; i< 24; ++i) { 37 if (results[i] != kase.elements[i]) { 38 throw new RuntimeException("wong answser at " + i); 39 } 40 } 41 } 42 43 }