ExpandArray.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
public class ExpandArray { private int[] arr; private int count; public ExpandArray(int initialSize){ arr = new int[initialSize]; count = 0; } private void expandArray(){ int[] newArr = new int[2 * arr.length]; for (int i = 0; i < count; i++) { newArr[i] = arr[i]; } arr = newArr; } public void add(int i){ if (count == arr.length ){ expandArray(); } arr[count++] = i; } // An order-preserving version of insert, which therefore // requires shifting everything in the array from idx onward // by one space. Returns false if adding to an index after // count (which would leave a "hole" in the array), else true. public boolean insert(int i, int idx){ if (idx > count) return false; if (idx == count) { add(i); return true; } if (count == arr.length ){ expandArray(); } for( int j = count-1; j >= idx ; j--) arr[j+1] = arr[j]; arr[idx] = i; count++; return true; } public int get(int i){ return arr[i]; } public void printArray(){ System.out.println("Array of length: " + arr.length + " with " + count + " elements."); for (int i = 0; i < count; i++){ System.out.print(arr[i] + " "); } System.out.println(); } } |
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Main{ public static void main(String[] args){ ExpandArray ea = new ExpandArray(2); ea.printArray(); ea.add(1); ea.add(2); ea.printArray(); ea.add(3); ea.printArray(); ea.insert(4, 1); ea.insert(5, 1); ea.printArray(); } } |