// file ListAsArray.java // Simple, fixed size, implementation of Lists as Arrays. public class ListAsArray { private int numElements = 0; private T[] elements; public ListAsArray(int size) { // Constructor elements = (T []) new Object[ size]; } public T[] getElements() { return elements; } public void setElements(T[] e) { elements = e; } public int getNumElements() { return numElements; } public T nth(int n) { // return the Nth element if (n < numElements) return elements[n]; else return null; } public T first() { return nth(0); } public T last() { return nth(numElements-1); } public int findFirst(T x) { // Find the first instance of X for (int I=0; I < numElements; I++) if (elements[I] == x) return I; return -1; // Flag for unsucessful find. } public void addAt(int l, T x) { if (numElements < elements.length) { for (int i = numElements; i > l; i--) // Slide everything up elements[i]=elements[i-1]; elements[l]=x; numElements++; } } public void addEnd(T x) { // Add an item at the end addAt(numElements,x); } public T deleteAt(int l) { // Delete the item at location L if (numElements > 0 && l < numElements) { T x = elements[l]; numElements--; for (int i=l; i< numElements; i++) // Slide everything down elements[i] = elements[i+1]; return x; } else return null; } public String toString() { String s = "["; for (int i=0; i < numElements; i++) s = s + " " + elements[i].toString(); return s+"]"; } // Clumsiest text editor ever devised public static void main(String[] args) { ListAsArray l = new ListAsArray(10); l.addEnd("The"); l.addEnd("qality"); l.addEnd("mercy"); l.addAt(2,"of"); // left out a word int typo = l.findFirst("qality"); // correct misspelling l.deleteAt(typo); l.addAt(typo,"quality"); System.out.println(l.toString()); // enough work for one day. } } // end ListAsArray