import java.util.*; // GrowList is a mutable list that only gets longer. public class GrowList { private Map values; public GrowList() { values = new HashMap();} // add to the end of the list public void add(E o) { values.put(size(), o); } // number of values in list public int size() { return values.size(); } // get ith value in list public E get(int i) { if (! inRange(i)) throw new IndexOutOfBoundsException("GrowList.get"); return values.get(i); } // update ith value in list; return previous value or null if none public E set(int i, E o) { if (! inRange(i)) throw new IndexOutOfBoundsException("GrowList.set"); return values.put(i, o); } // private helper method private boolean inRange(int i) { return (i >= 0) && (i < size()); } public String toString() { if (size() == 0) return "[]"; String result = "["; for (int i = 0; i < size()-1; i++) { result += values.get(i) + ","; } return result + values.get(size() - 1) + "]"; } public static void main(String[] args) { GrowList list = new GrowList(); System.out.println("list is:" + list); list.add("cat"); System.out.println("list is:" + list); list.add("dog"); System.out.println("list is:" + list); list.set(1,"bat"); System.out.println("list is:" + list); } }