Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Most of the slides are based on a curriculum purchased from A+ Computer Science Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList can store any type. It can store a combination of types. All ArrayLists store the first reference at index/position/subscript 0. int[] nums = new int[10]; nums //Java int array 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 An array is a group of items all of the same type which are accessed through a single identifier. ArrayList is a descendant of List (which extends Collection), but because List and Collection are interfaces, you cannot instantiate them. Collection bad = new Collection(); //illegal List ray = new ArrayList(); //legal ArrayList list = new ArrayList(); //legal ray and list store Object references. ArrayList list; list null null nothing list is a reference to an ArrayList. new ArrayList(); 0x213 [] ArrayLists are Objects. ArrayList list = new ArrayList(); list 0x213 0x213 [] list is a reference to an ArrayList. Example of an ArrayList without the type <T> identifier: OUTPUT h List ray = new ArrayList(); ray.add("hello"); c ray.add(“school"); ray.add("contests"); System.out.println(( (String) ray.get(0)).substring(0,1)); System.out.println(( (String) ray.get(2)). substring(0,1)); casting (must cast in order to send messages to the object) ray stores Object references. Generic ArrayLists are array lists that take a type parameter. In other words you identify the type of all the elements in the array list. With Java 5, you can now specify which type of reference you want to store in the ArrayList. ArrayList<String> words; words = new ArrayList<String>(); ArrayList<Double> decNums; decNums = new ArrayList<Double>(); With Java 5, you can now specify which type of reference you want to store in the ArrayList. ArrayList<Integer> bigStuff; bigStuff = new ArrayList<Integer>(); ArrayList<Student> studentList; studentList = new ArrayList<Student>(); List<String> ray; OUTPUT ray = new ArrayList<String>(); ray.add("hello"); h ray.add(“school"); c ray.add("contests"); System.out.println(ray.get(0).substring(0,1)); System.out.println(ray.get(2).substring(0,1)); ray stores String references. ArrayList Name frequently used methods Use add(item) adds item to the end of the list add(index,item) adds item at index – shifts items up-> set(index,item) replaces item at index (returns old element) get(index) returns the item at index (similar to z[index] ) size() returns the number of items in the list (similar remove(index) removes the item at index (returns element that was removed) remove(value) removes first item that matches this value (returns true if item was found, else false) clear() removes all items from the list (similar to z[index]=item) to z.length) import java.util.ArrayList; ArrayList<String> words; words = new ArrayList<String>(); words.add(0,"it"); OUTPUT words.add("is"); words.add("a"); [it, is, a, lie] words.add("lie"); System.out.println(words); ArrayList<Integer> nums; nums = new ArrayList<Integer>(); nums.add(34); OUTPUT nums.add(0,99); nums.add(21); [99, 34, 21, 11] nums.add(11); System.out.println(nums); ArrayList<Integer> ray; ray = new ArrayList<Integer>(); ray.add(23); OUTPUT ray.add(11); ray.set(0,66); [66, 93, 53, 22] ray.add(53); ray.set(1,93); ray.add(22); System.out.println(ray); for (int i=0; i<ray.size(); i++) { System.out.println(ray.get(i)); } size( ) returns the number of elements (logical/physical size) in the array list. ArrayList<Double> ray; ray = new ArrayList<Double>(); ray.add(23.23); ray.add(11.11); ray.add(12.1); ray.add(65.6); OUTPUT 23.23 65.6 System.out.println(ray.get(0)); System.out.println(ray.get(3)); get(index) returns the reference stored at the index! ArrayList<Integer> ray; ray = new ArrayList<Integer>(); ray.add(23); OUTPUT ray.add(11); 23 ray.add(12); 11 ray.add(65); for(int i=0; i<ray.size(); i++) System.out.println(ray.get(i)); 12 65 get(index) returns the reference stored at the index! ArrayList<String> ray; ray = new ArrayList<String>(); ray.add("a"); ray.add("b"); ray.remove(0); ray.add("c"); ray.add("d"); ray.remove(0); System.out.println(ray); OUTPUT [c, d] ArrayList<String> ray; ray = new ArrayList<String>(); ray.add("a"); ray.add("b"); ray.remove("a"); ray.add("c"); ray.add("d"); ray.remove("d"); System.out.println(ray); OUTPUT [b, c] ArrayList<Integer> ray; ray = new ArrayList<Integer>(); ray.add(5); OUTPUT ray.add(4); [5, 4, 2] 3] ray.add(3); ray.add(2); ray.remove(new Integer(2)); ray.remove(2); System.out.println(ray); However, if this line was coded like this ArrayList<String> ray; ray = new ArrayList<String>(); ray.add("a"); ray.add("x"); ray.clear(); ray.add("t"); ray.add("w"); System.out.println(ray); OUTPUT [t, w] ArrayList Name frequently used methods Use add(item) adds item to the end of the list add(index,item) adds item at index – shifts items up-> set(index,item) replaces item at index (returns old element) get(index) returns the item at index (similar to z[index] ) size() returns the number of items in the list (similar remove(index) removes the item at index (returns element that was removed) remove(value) removes first item that matches this value (returns true if item was found, else false) clear() removes all items from the list (similar to z[index]=item) to z.length) import java.util.ArrayList; ArrayList<Integer> ray = new ArrayList<Integer>(); ray.add(3); ray.add(5); ray.add(12); ray.add(7); OUTPUT [5, 12] for (int i=0; i<ray.size(); i++) { if (ray.get(i) < 10) { ray.remove(i); i--; } // fixes bug } System.out.println(ray); ArrayList<Integer> ray; ray = new ArrayList<Integer>(); ray.add(23); ray.add(11); ray.add(53); for(int num : ray) { System.out.println(num); } OUTPUT 23 11 53 How can you initialize an ArrayList? ArrayList<String> names = new ArrayList<String>(); names.add(“Smith”); names.add(“Jones”); Or similar to an initializer list for an array: ArrayList<String> names = new ArrayList<String> (Arrays.asList("Smith", "Jones")); import java.util.ArrayList; import java.util.Arrays; • Purpose: To get familiar with ArrayLists • Make a copy of your EmployeeNames and EmployeeNamesTester classes and name them EmployeeArrayList and EmployeeArrayListTester. • Alternatively, make a copy of Cities and CitiesTester classes and name them CitiesArrayList and CitiesArrayListTester. • In either case, change all occurrences of arrays to ArrayLists. Primitive types Objects (wrapper class) byte Byte short int Short Integer long float double char Long Float Double Character boolean == Boolean .equals() Before Java 5 added in autoboxing and autounboxing, you had to manually wrap primitives. Integer x = new Integer(98); or int y = 56; x= new Integer(y); Java now wraps automatically. Integer num1 = 99; and Integer num1 = new Integer(99); These two lines are equivalent. Java now wraps automatically. Double num1 = 99.1; and Double num1 = new Double(99.1); These two lines are equivalent. Before Java 5 added in autoboxing and autounboxing, you had to manually unwrap references. If you boxed 98 as an Integer like this: Integer ref = new Integer(98); Then you had to unbox it like this: int y = ref.intValue(); Java now unwraps automatically. int prim; Integer num = new Integer(3); OLD WAY: prim=num.intValue(); System.out.println(prim); NEW WAY: prim = num; System.out.println(prim); These two lines are equivalent. OUTPUT 3 3 OUTPUT Double dub = 9.3; double prim = dub; 9.3 System.out.println(prim); 0 -1 int num = 12; 1 Integer big = num; System.out.println(big.compareTo(12)); System.out.println(big.compareTo(17)); System.out.println(big.compareTo(10)); ArrayList<Integer> ray; ray = new ArrayList<Integer>(); OUTPUT 153 //add some values to ray int total = 0; for(Integer num : ray) { //this line shows the manual retrieval of the primitive total = total + num.intValue(); // total += num.intValue(); //the line below accomplishes the same as the line above //but it uses autounboxing to get the primitive value total = total + num; // total += num; } System.out.println(total); Create a method to return the total of all the values in an ArrayList. Here is the method’s signature line: int total = 0; public int totalValues(ArrayList<Integer> scores) { } public class Creature implements Comparable { private int weight; Instance variable public Creature(int wt) { weight=wt; } Constructor initializes weight of Creature public void setWeight(int wt) { weight=wt; } toString() returns the String public String toString() representation of Creature { return “Creature which weighs ” + weight + “ lbs”; } } //Other methods not shown here ArrayList<Creature> creatureList; creatureList = new ArrayList<Creature>(); creatureList.add(new Creature(4)); creatureList.add(new Creature(9)); creatureList.add(new Creature(1)); creatureList 0 1 2 0x12 0x32 0xD2 Creature 4 Creature 9 Creature 1 ArrayList<Creature> creatureList; creatureList = new ArrayList<Creature>(); creatureList.add(new Creature(4)); creatureList.add(new Creature(9)); creatureList.add(new Creature(1)); System.out.println(creatureList.get(0)); creatureList.get(0).setWeight(7); System.out.println(creatureList.get(0)); System.out.println(creatureList.get(2)); OUTPUT Creature which weighs 4 lbs Creature which weighs 7 lbs Creature which weighs 1 lbs creatureList.get(0). setWeight(7); 0x242 0x242 What does this return? What does the . dot do? Creature The . dot grants access to the Object at the stored address. Ends with an s Collections frequently used methods Name Use sort(x) Puts all items in array list x in ascending order binarySearch(x,y) Prerequisite: array list x must be sorted. Checks x for the location of y. This method returns the index where y is found. If y is not found, it returns -1 minus (the position in the array list where x would be added). fill(x,y) Fills all elements in x with value y rotate(x,y) Shifts items in x right y positions (if y is positive) or left y positions (if y is negative) reverse(x) Reverses the order of the items in x import java.util.Collections; ArrayList<Integer> ray; ray = new ArrayList<Integer>(); ray.add(23); ray.add(11); ray.add(66); ray.add(53); Collections.sort(ray); OUTPUT [11, 23, 53, 66] -5 3 System.out.println(ray); System.out.println(Collections.binarySearch(ray,677)); System.out.println(Collections.binarySearch(ray,66)); ArrayList<Integer> ray = ArrayList<Integer>(); ray.add(23); ray.add(11); ray.add(53); ray.add(100); System.out.println(ray); Collections.rotate(ray,1); System.out.println(ray); OUTPUT [23, 11, 53, 100] [100, 23, 11, 53] [23, 100, 53, 11] Collections.rotate(ray,-2); // [11, 53, 100, 23] Collections.reverse(ray); System.out.println(ray); ArrayList<Integer> ray; ray = new ArrayList<Integer>(); ray.add(0); ray.add(20); OUTPUT ray.add(50); [0, 20, 50] System.out.println(ray); [33, 33, 33] Collections.fill(ray,33); System.out.println(ray); ArrayList frequently used methods Name Use contains(y) Checks to see if the list contains y. Returns either true or false. indexOf(y) Checks the array list for the location of y. Returns the index where y is found. If not found, it returns -1. isEmpty() Returns true if the array list is empty (no elements) or false if it contains elements. ArrayList<Integer> ray; ray = new ArrayList<Integer>(); ray.add(23); ray.add(11); ray.add(66); ray.add(53); System.out.println(ray); System.out.println(ray.indexOf(21)); System.out.println(ray.indexOf(66)); System.out.println(ray); System.out.println(ray.contains(21)); System.out.println(ray.contains(66)); OUTPUT [23, 11, 66, 53] -1 2 [23, 11, 66, 53] false true The following are important interfaces included in the Java language: Collection List Map Collection Implementing Classes Sub Interfaces -extends List Set Implementing Classes Sub Interfaces -extends SortedMap HashMap HashTable Sub Interfaces -extends SortedSet Implementing Classes ArrayList LinkedList TreeSet Vector Stack AbstractSet HashSet LinkedHashSet Implementing Classes TreeMap The Collection interface is the parent of List and Set. The Collection interface has many methods including add(), clear(), remove(), and size(). Collection List Set others not shown The List interface extends the Collection interface. Additionally, the List interface also has the get() method as well as several other methods. List ArrayList LinkedList others not shown ArrayList is a descendant of List and Collection, but because List and Collection are interfaces, you cannot instantiate them. Collection bad = new Collection(); List justAsBad = new List(); //illegal //illegal List list = new ArrayList<Integer>(); //legal ArrayList aList = new ArrayList<Integer>(); //legal Collection col = new ArrayList<Integer>(); //legal ** ** Legal only if using methods from Collection interface list, aList, and col store Object references.