01b-arraylist_review
Download
Report
Transcript 01b-arraylist_review
TCSS 342, Winter 2005
Lecture Notes
Array List Review
Weiss Ch. 4, pp. 43-45
Weiss Ch. 6, pp. 190-201
1
Java's ArrayList class
Class java.util.ArrayList implements
List using an array as the internal
implementation
when you want to use ArrayList, remember to
import java.util.*;
encapsulates array and # of elements (size)
2
ArrayList features
think of it as an auto-resizing array that can
hold any type of object, with many convenient
methods
maintains most of the benefits of arrays, such
as fast random access
frees us from some tedious operations on
arrays, such as sliding elements and resizing
can call toString on an ArrayList to print
its elements
[1, 2.65, Marty Stepp, Hello]
3
ArrayList vs. array usage
construction
storing an element
String[] names = new String[5];
ArrayList namesList = new ArrayList();
names[0] = "Jennifer";
namesList.add("Jennifer");
namesList.set(0, "Jennifer");
// or,
retrieval of an element's value
String name = names[0];
String name = (String)namesList.get(0);
Why is the type-cast needed? What happens without it?
4
ArrayList vs. array, cont'd.
removal of an element (at index 2)
search to see if "Marty" is there
for (int i = 2; i < names.length - 1; i++)
names[i] = names[i+1];
namesList.remove(2);
for (int i = 0; i < names.length; i++)
if (names[i].equals("Marty")) { ... }
if (namesList.contains("Marty")) { ... }
erase all names from the list
for (int i = 0; i < names.length; i++)
names[i] = null;
namesList.clear();
5
ArrayList and references
a collection such as ArrayList stores
references to its elements
if two collections refer to the same object, side
effects from one can be seen in the other
BankAccount acct = new BankAccount("Ed", 0);
ArrayList list1 = new ArrayList();
list1.add(acct);
ArrayList list2 = new ArrayList();
list2.add(acct);
acct.deposit(100.00);
System.out.println(list1); // the lists will
System.out.println(list2); // show the $100.00!
6
Storing primitives in collection
collections like ArrayList store objects, not primitive
types like int, double, char, boolean
to store these primitives, we need special object
wrappers (see Java API docs for details):
class
class
class
class
Integer / public int intValue()
Double / public double doubleValue()
Character / public char charValue()
Boolean / public boolean booleanValue()
ArrayList list = new ArrayList();
list.add(new Integer(42));
int value = ((Integer)list.get(0)).intValue();
7
A list of ints, using an array
We like arrays, but they can be clunky to use
Let's write a class that implements a "list" as
described previously, of ints, using an array
it will wrap up the functionality of an array of int,
but make it simpler to use and have more power
we'll call it IntArrayList
behavior: add, remove, get size, is empty, clear, get
element, set element, search for element
the list's "size" will be the number of elements
we've added to it (0 <= index < size)
8
IntArrayList vs. array
construction
int[] numbers = new int[5];
IntArrayList numberList = new IntArrayList();
storage
Where did the capacity of 5 go? Why didn't we use it?
numbers[0] = 42;
numberList.set(0, 42);
retrieval
int number = numbers[0];
int number = numberList.get(0);
9
IntArrayList vs. array, cont'd.
removal (of element #2)
search to see if 27 is there
for (int i = 2; i < numbers.length - 1; i++)
numbers[i] = numbers[i+1];
numberList.remove(2);
for (int i = 0; i < numbers.length; i++)
if (numbers[i] == 27) { ... }
if (numberList.contains(27)) { ... }
erase all numbers from the list
for (int i = 0; i < numbers.length; i++)
numbers[i] = 0;
numberList.clear();
10
Example IntArrayList usage
IntArrayList list = new IntArrayList();
for (int i = 0; i < 20; i++)
list.add(i*i);
System.out.println(list);
System.out.println("element 5: " + list.get(5));
list.set(7, 999);
list.add(4, 444);
System.out.println("Index of 121? " +
list.indexOf(121));
System.out.println("is 10 in the list? " +
list.contains(10));
11
Pros and cons of IntArrayList
pro (benefits)
simple syntax
don't have to keep track of array size and capacity
has some powerful methods (indexOf, add, contains)
con (drawbacks)
it only works for ints!
we can make arrays of any type, but we can only make
an IntArrayList of ints
syntax is a bit different to learn and use
12
IntArrayList practice problems
Implement it! (implementation on web site)
Rewrite our maximum subsequence sum
solution from last time, using an IntArrayList
instead of an array.
13