CSC 142 The ArrayList class [Reading: chapter 10] CSC 142 J(part 1) 1 The ArrayList class Available in the package java.util. An ArrayList object stores a list of items. The ArrayList automatically manages its size. The list grows as more items are added, or shrinks as some items are removed. Items stored in an ArrayList all have the same reference type (i.e. defined by a class). Primitive type values can’t be stored as such in an ArrayList -> must use a wrapper type. CSC 142 J(part 1) 2 Declaring an ArrayList object A named collection of data items of the same reference type. To declare an ArrayList of Strings, write ArrayList<String> phrases; To declare an ArrayList of integers, write ArrayList<Integer> numbers; NOT ArrayList<int> numbers; Always use the <> notation (= generics). At this point, no memory is reserved for the ArrayList CSC 142 J(part 1) 3 Initializing an ArrayList To initialize an ArrayList (once declared) phrases = new ArrayList<String>(); numbers = new ArrayList<Integer>(); Other constructors are available e.g. // Make a copy of an existing ArrayList copy = new ArrayList<String>(phrases); // Or if you know the size you need daysOfTheWeek = new ArrayList<String>(7); // But daysOfTheWeek is NOT limited // to 7 elements CSC 142 J(part 1) 4 Manipulating ArrayList elements (1) To add an element to an ArrayList ArrayList<String> a = new ArrayList<String>(); a.add(“Monday”); a.add(“Wednesday”); To access an ArrayList element, use its index (also called subscript), e.g., String first = a.get(0); // Monday String second = a.get(1); // Wednesday Indices start at 0. If an ArrayList has 10 elements, the first element has index 0 and the last element has index 9. • To insert in an ArrayList a.add(1,“Tuesday”); //Wednesday is now at index 2 CSC 142 J(part 1) 5 Manipulating ArrayList elements (2) To remove an element from an ArrayList String s = a.remove(1); // element at index 1 is // removed automatically, elements at indices > 1 // are shifted down // Also: boolean success = a.remove(s); // removes s (= some object) if present. Returns true // if s has been removed, and false if not. Other operations: indexOf, contains, set See java documentation CSC 142 J(part 1) 6 ArrayList and loops (1) Loop with an index e.g. if a is an ArrayList of Rectangle objects for(int i = 0; i < a.size(); i ++) { Rectangle r = a.get(i); Number of elements // work with r... in a } Loop with an iterator Iterator<Rectangle> it = a.iterator(); // could also use a ListIterator while(it.hasNext()) { Rectangle r = it.next(); // work with r... CSC 142 J(part 1) 7 } ArrayList and loops (2) for each loop for(Rectangle r : a) { // work with r... } Which one to use? To read the elements in no special order, use a for each loop. To iterate through the ArrayList in a special way (e.g. from last to first, every other element), use a loop with an index. for each and iterator loops are read only. CSC 142 J(part 1) 8 Memory view ArrayList<String> a= new ArrayList<String>(); a.add(“Mercury”); a.add(“Earth”); a.add(1,”Venus”); String a ArrayList “Mercury” String 0 1 2 “Venus” String “Earth” CSC 142 J(part 1) 9