An object of class DynamicArrayOfInt acts like an array with unlimited size. In the constructor, initially the data array has a size of 1 and grows as necessary.
The method put(position, value); is used to store the value at the specified position in the array. There is no pre-set limit on how large position can be, although for very large values there would be problems with having enough computer memory. The function get(position); is used to retrieve the value stored in the specified position. If no value has ever been put at that position, then the value is zero.
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 | public class DynamicArrayOfInt { private int[] data; // An array to hold the data. The actual size // of the array will increase as necessary. public DynamicArrayOfInt() { // Constructor. Create a new DynamicArrayOfInt object. // Initally, the data array only has size 1, but it will // grow as necessary. data = new int[1]; } public int get(int position) { // Get the value from the specified position in the array. // Since all array positions are initially zero, when the // specified position lies outside the actual physical size // of the data array, a value of 0 is returned. However, the // array does NOT grow to include the specified position. if (position >= data.length) return 0; else return data[position]; } public void put(int position, int value) { // Store the value in the specified position in the array. // The data array will increase in size to include this // position, if necessary. if (position >= data.length) { // The specified position is outside the actual size of // the data array. Double the size, or if that still does // not include the specified position, set the new size // to 2*position. A new, larger array is created and // all the data from the old array is copied into it. // Then the instance variable, data, is set to refer // to the newly created array. int newSize = 2 * data.length; if (position >= newSize) newSize = 2 * position; int[] newData = new int[newSize]; System.arraycopy(data, 0, newData, 0, data.length); data = newData; // The following line is here for demonstration purposes only. System.out.println("Size of dynamic array increased to " + newSize); } data[position] = value; } } // end class DynamicArrayOfInt |