330 likes | 690 Views
ArrayList. It is very common for applications to require us to store a large amount of data. Array lists store large amounts of data in a single collection that can be referred to with a single variable. ArrayList. An ArrayList is a sequence of objects that grows and shrinks as needed.
E N D
ArrayList • It is very common for applications to require us to store a large amount of data. • Array lists store large amounts of data in a single collection that can be referred to with a single variable. AP CS Workshop 2008
ArrayList • An ArrayList is a sequence of objects that grows and shrinks as needed. • The ArrayList class is part of the java.util package of the Java standard class library. • must import java.util.ArrayList AP CS Workshop 2008
ArrayList • Each element in the sequence can be accessed separately. • We can explicitly overwrite an object at a specified position in the sequence, thus changing its value. • We can inspect the object at a specified location in the sequence. • We can add an object into a specified position of the sequence. • We can add an object to the end of the sequence. • We can remove an object from a specified location in the sequence. AP CS Workshop 2008
java.util.ArrayList (implements List) ArrayList is generic ArrayList<String> ArrayList<Student> ArrayList<BankAccount> AP CS Workshop 2008
ArrayLists for AP CS A Notice that the AP CS A Subset does not require the knowledge that ArrayList implements List. AP CS Workshop 2008
java.util.ArrayList<E>for AP CS A • int size() // returns the number of elements in this list • boolean add(E x) // appends x to the end of list; returns true • E get(int index)// returns the element at the specified position in this list. • E set(int index, E x)// replaces the element at index with x // returns the element formerly at the specified position AP CS Workshop 2008
class java.util.ArrayList<E>for AP CS A • void add(int index, E x)// inserts x at position index, sliding elements // at position index and higher to the right // (adds 1 to their indices) and adjusts size • E remove(int index)// removes element from position index, sliding // subsequent elements to the left (subtracts 1 from their // indices) and adjusts size// returns the element at the specified position in this list. AP CS Workshop 2008
Course Description AP CS AB Notice that the AB Subset DOES require the knowledge that ArrayList implements List. iterators SHOULD BE TAUGHT in A AP CS Workshop 2008
An example: import java.util.ArrayList; public class ArrayList_01 { public static void main (String [] arg) { System.out.println("ArrayListTest"); ArrayList<String> aList = new ArrayList <String>(); aList.add(new String("Dan")); aList.add("George"); aList.add("Mary"); System.out.println("aList contains:"); for(int x = 0; x < aList.size(); x++) { System.out.println(aList.get(x)); } } } AP CS Workshop 2008
Using enhanced FOR loop: import java.util.ArrayList; public class ArrayList_01_ForEach { public static void main (String [] arg) { System.out.println("ArrayListTest"); ArrayList<String> aList = new ArrayList <String>(); aList.add(new String("Dan")); aList.add("George"); aList.add("Mary"); System.out.println("aList contains:"); for(String e:aList) { System.out.println(e); } } } AP CS Workshop 2008
Other ArrayList methods // ArrayList_02 ArrayList<String> students = new ArrayList<String>(); students.add("Mary" ); students.add("James"); students.add("Kevin"); students.add(1, "Tanya"); String temp = students.get(3); System.out.println(temp); students.remove(2); students.set(1, "John"); System.out.println(students.size()); AP CS Workshop 2008
What happens?ArrayList_02 ArrayList<String> students = new ArrayList<String>(); students.add("Mary"); students.add("James"); students.add("Kevin"); students.add(1, "Tanya"); String temp = students.get(3); System.out.println(temp); students.remove(2); students.set(1, "John"); System.out.println(students.size()); temp AP CS Workshop 2008
An ArrayList is a sequence of objects. • Array lists can hold any kind of object. For the generic ArrayList, you must include the type of object the ArrayList will hold. • ArrayList<Athlete> athletes = new ArrayList<Athlete>(); • ArrayList<Student> csci6 = new ArrayList<Student>(); • ArrayList<BankAccount> accounts = new ArrayList<BankAccount>(); • The ArrayList method add adds an Object of the type specified in the array list declaration. • The ArrayList method get returns an Object of the type specified in the array list declaration. AP CS Workshop 2008
A bit more about toString() AP CS Workshop 2008
What happens? public class StringTest { public static void main(String[] args) { ArrayList<String> stringList = new ArrayList<String>(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); System.out.println(stringList); } } AP CS Workshop 2008
WHY???? public class StringTest { public static void main(String[] args) { ArrayList<String> stringList = new ArrayList<String>(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); System.out.println(stringList); } } [Fran, Marie, Joe] Let's look at the API! AP CS Workshop 2008
The ArrayList is defined using generics . • A generic is a method that is recompiled with different types as the need arises. List<Employee> employeeList = new ArrayList<Employee>(); • Use of generics provides compile-time checking to make sure you are using the correct typeEmployee emp = employeeList.get(i).getName(); AP CS Workshop 2008
ArrayLists contain Objects • Numbers are not objects. • You can not have an ArrayList of ints or doubles or booleans or chars. AP CS Workshop 2008
Again:An ArrayList is a sequence of objects. • Array lists can hold any kind of object. • The ArrayList method add adds an Objectof specified type. • The ArrayList method get returns an Objectof specified type. • What if we want our ArrayList to hold ints or doubles? AP CS Workshop 2008
Filling the ArrayList for (int k = 1; k <= 20; k++) { nbrs.add(new Integer(k)); } AP CS Workshop 2008
Printing the ArrayList for(Integer e : nbrs) { System.out.println(e); } Integer has a toString method that does the right thing. AP CS Workshop 2008
Printing the sum of the integer values in the ArrayList int sum = 0; Integer temp; for (int k = 0; k < nbrs.size(); k++) { temp = nbrs.get(k); sum += temp.intValue(); } System.out.println("sum equals: " + sum); AP CS Workshop 2008
Printing the sum of the integer values in the ArrayList //alternate method using enhanced for and auto //boxing/unboxing sum = 0; for (Integer e:nbrs) { sum += e; } System.out.println("sum equals: " + sum); AP CS Workshop 2008
Java 5.0 introduced • Auto-boxing and Auto-unboxing (not tested) • The idea of auto-boxing and auto-unboxing is to make it easier to convert between primitive data types like int, double, and boolean and their equivalent classes, like Integer, Double, and Boolean. It is sometimes frustrating and tedious to have to do such a conversion, especially if results must be converted back to their original form. AP CS Workshop 2008
Autoboxing/unboxing ArrayList<Double> numbers = new ArrayList<Double>(); numbers.add(14.5); numbers.add(3.4); double sum = numbers.get(0) + numbers.get(1); AP CS Workshop 2008
Auto-boxing and Auto-unboxing • Integer/intequality tests int == int OK Integer.equals(Integer) OK Integer == int OK Integer.equals(int) OK Integer.compareTo(int)==0 OK AP CS Workshop 2008
Auto-boxing and Auto-unboxing • Integer/int equality tests • int .equals(Integer) NO • int .equals(int) NO • Integer == Integer NO(as test for value equality) • Integer.equals(null) NO AP CS Workshop 2008
Auto-boxing and Auto-unboxing • NOT part of the AP CS Testable Subset. • Students need to understand • intValue() • doubleValue() AP CS Workshop 2008
ArrayList Applications Finding values, counting, max and min, average, median, mode….. Your students should be able to manipulate all sorts of algorithms for ArrayLists. AP CS Workshop 2008
AP CS A 2007 Question 3a AP CS Workshop 2008
AP CS A 2007 Question 3b AP CS Workshop 2008
AP CS A 2007 Question 3b AP CS Workshop 2008