fork download
  1. import java.lang.reflect.Field;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. class Ideone {
  6. ArrayList<Integer> normalList = new ArrayList<Integer>();
  7.  
  8. public static void main(String[] args) throws Exception {
  9. Ideone m = new Ideone();
  10. m.addElements();
  11. }
  12.  
  13. public void addElements() throws Exception {
  14. int lastCap = -1;
  15. for (int j = 0; j < 1000000; j++) {
  16. this.normalList.add(j);
  17. int cap = getCapacity(this.normalList);
  18. if (cap != lastCap) {
  19. System.out.println("size:" + normalList.size() + " capacity:" + cap);
  20. lastCap = cap;
  21. }
  22. }
  23. }
  24.  
  25. int getCapacity(List al) throws Exception {
  26. Field field = ArrayList.class.getDeclaredField("elementData");
  27. field.setAccessible(true);
  28. return ((Object[]) field.get(al)).length;
  29. }
  30. }
  31.  
Success #stdin #stdout 0.75s 2841600KB
stdin
Standard input is empty
stdout
size:1 capacity:10
size:11 capacity:15
size:16 capacity:22
size:23 capacity:33
size:34 capacity:49
size:50 capacity:73
size:74 capacity:109
size:110 capacity:163
size:164 capacity:244
size:245 capacity:366
size:367 capacity:549
size:550 capacity:823
size:824 capacity:1234
size:1235 capacity:1851
size:1852 capacity:2776
size:2777 capacity:4164
size:4165 capacity:6246
size:6247 capacity:9369
size:9370 capacity:14053
size:14054 capacity:21079
size:21080 capacity:31618
size:31619 capacity:47427
size:47428 capacity:71140
size:71141 capacity:106710
size:106711 capacity:160065
size:160066 capacity:240097
size:240098 capacity:360145
size:360146 capacity:540217
size:540218 capacity:810325
size:810326 capacity:1215487