arraylists 1 - ahs-dib.info · arraylists 1 1/26/17 . objective • understand difference between...
TRANSCRIPT
![Page 1: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/1.jpg)
ArrayLists 1
1/26/17
![Page 2: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/2.jpg)
Objective
• Understand difference between Arrays and ArrayLists
• Using Array Lists
11-2
![Page 3: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/3.jpg)
Arrays – Objects or Not?
• Why the ambiguity about whether arrays are objects?
– Because for an object, they are pretty lame.
– All they bring to the table is that they are passed by reference and they have one field (length).
– True objects would have plenty of methods to use that would make the clients job much easier.
11-3
![Page 4: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/4.jpg)
So what is an ArrayList?
• An ArrayList is a class that handles all of the common operations done with arrays.
– Its field are:
• Object[] arr
• int capacity
• int size
- It’s methods include:
- Constructors (2), remove(), add(), set(), get(), remove(), indexOf(), size(), contains(), toString()
![Page 5: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/5.jpg)
Array of Strings – removing elements
String[] myStringArray = new String[10];
myStringArray[0] = “hi”;
myStringArray[1] = “bye”;
myStringArray[2] = “hola”;
myStringArray[3]= “adios”;
int size = 4;
System.out.println(myStringArray[2]); //hola
myStringArray[1]=myStringArray[2];
//for loop to find index of “hola”
//to delete index, for loop to move items to the right ove
//keep track of size.
“hi” “bye” “hola” “adios”
![Page 6: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/6.jpg)
ArrayList of Strings – removing elements, much easier for client
Appears the same but easier to manage; ArrayList<String> myArrayList = new ArrayList<String>();
myArrayList.add(“hi”);
myArrayList.add(“bye”);
myArrayList.add(“hola”);
myArrayList.add(“adios”);
System.out.println(myArrayList.get(2)); //hola
int index = myArrayList.indexOf(“hola”);
myArrayList.remove(1); //removes “bye”, shifts hola and
//adios over, decreases size
“hi” “bye” “hola” “adios”
![Page 7: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/7.jpg)
Calling the ArrayList constructor
//constructs an empty ArrayList of strings, default
//capacity is 10
ArrayList<String> myList = new ArrayList<String>();
//constructs an ArrayList of Integers with a capacity of
//50.
ArrayList<Integer>myIntList = new ArrayList<Integer>(50);
*The ArrayList constructor is overloaded. If no arguments passed in, a list with a default capacity of 10 is created.
*If you know your size from the beginning, you should use the second constructor, so time is not wasted resizing later.
11-7
![Page 8: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/8.jpg)
Why use an ArrayList instead of an array?
• Common methods available
• We don’t have to keep track of size, we just call size() method.
• Array will automatically increase in size as needed when adding objects.
• When removing objects, array will decrease and move items over as needed.
• Print name of list, and entire contents is printed
11-8
![Page 9: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/9.jpg)
Why use an Array instead of ArrayList?
• Can use primitive data with arrays
• Can initialize in one line
• Can update values in one line
• Takes up less space (memory), generally more efficient
![Page 10: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/10.jpg)
11-10
java.util.ArrayList<E>
• Implements a list using an array
• Implements java.util.List<E> interface
• So sometimes you will see List x = new ArrayList<String>
«interface»
java.util.List
java.util.ArrayList java.util.LinkedList
![Page 11: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/11.jpg)
11-11
java.util.ArrayList<E> cont’d
• Can only hold objects (of a specified type), not elements of primitive data types.(Why is this?)
• Keeps track of the list capacity (the length of the allocated array) and list size (the number of elements currently in the list)
"Cat" "Hat" "Bat"
capacity
size
...
![Page 12: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/12.jpg)
11-12
ArrayList<E> Constructors
ArrayList<E> ( )
ArrayList<E> (int capacity)
Creates an empty
ArrayList<E> of
default capacity (ten)
Java docs use the letter E as
the type parameter for elements
in generic collections
Creates an empty
ArrayList<E> of the
specified capacity
![Page 13: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/13.jpg)
11-13
ArrayList<E> Methods (a Subset)
int size()
boolean isEmpty ()
boolean add (E obj)
void add (int i, E obj)
E set(int i, E obj)
E get(int i)
E remove(int i)
boolean contains(E obj)
int indexOf(E obj) both use E’s
equals to compare
objects
i must be from 0 to size() -1**(not
capacity)
inserts obj as the
i-th value; i must
be from 0 to size()
returns true
![Page 14: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/14.jpg)
11-14
ArrayList Example
ArrayList<String> names =
new ArrayList<String>( );
names.add("Ben");
names.add("Cat");
names.add(0, "Amy");
System.out.println(names);
[Amy, Ben, Cat]
Output ArrayList’s toString
method returns a string of
all the elements, separated
by commas, within [ ].
![Page 15: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/15.jpg)
11-15
ArrayList<E> - Some things to know
• Automatically increases (doubles) the capacity when the list runs out of space (allocates a bigger array and copies all the values into it).
• get(i) and set(i, obj) are efficient because an array provides random access to its elements.
• Throws IndexOutOfBoundsException when
i < 0 or i size()
(or i > size() in add (i, obj) )
![Page 16: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/16.jpg)
11-16
ArrayList<E> Autoboxing
• If you need to put ints or doubles into a list, use a standard Java array or convert them into Integer or Double objects
• Since Java 5, conversion from int to Integer and from double to Double is, in most cases, automatic (a feature known as autoboxing or autowrapping); the reverse conversion (called autounboxing) is also automatic.
![Page 17: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/17.jpg)
11-17
ArrayList<E> Autoboxing Example
ArrayList<Integer> counts =
new ArrayList<Integer>( );
counts.add(17);
...
int count = counts.get(0);
Autoboxing: compiled as
counts.add(new Integer(17));
Autounboxing: count
gets the value 17
![Page 18: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/18.jpg)
11-18
Look at ArrayListDemo.java
• What will print?
![Page 19: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/19.jpg)
Homework 1-4
1. True or False: a. An ArrayList can contain multiple references to
the same object b. The same object may belong to two different
ArrayLists c. ArrayList’s remove method destroys the object
after it has been removed from the list. d. ArrayList’s add method makes a copy of the
object and adds it to the list. e. Two variables can refer to the same ArrayList
![Page 20: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/20.jpg)
Homework #2 T/F
The ArrayList class has a method trimToSize() which trims the capacity of the list to its current size. T/F, calling this method:
a. Saves space in the program
b. Will make add(x) calls more efficient
c. Will make add(0, x) calls more efficient
d. Will make get(i) and set(i, x) more efficient.
![Page 21: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/21.jpg)
HW #3
Why might you use a simple Java array as opposed to an ArrayList?
![Page 22: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/22.jpg)
HW #4
What is the output: ArrayList<Integer> myList = new ArrayList<Integer>();
myList.add(0);
myList.add(1);
myList.add(2);
myList.add(0,0);
myList.add(1,1);
myList.add(2,2);
System.out.println(myList);
![Page 23: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/23.jpg)
11-23
Lab: Shuffler • The Shuffler program shuffles the lines of
text, then allows the user to restore the right order.
![Page 24: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/24.jpg)
11-24
Lab: Shuffler (cont’d) • Your job is to write the LineList class, with
one field, ArrayList<String>, and the following methods: – int size () — returns the number of lines
– String get (int k) — returns the line at index k
– void add (String line) — appends line to list
– String remove (int k) — removes and returns the k-th line
– void move(int index, int newIndex) — moves the line at index to the position at newIndex
– void shuffle() — shuffles the lines of text
![Page 25: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/25.jpg)
11-25
Lab: Shuffler (cont’d)
• Use the following algorithm for shuffle:
1. Set n to the size of the list;
2. Randomly select an element among the first n
and swap it with the n-th element;
3. Decrement n by one;
4. Repeat Steps 2-3 while n 2.
![Page 26: ArrayLists 1 - ahs-dib.info · ArrayLists 1 1/26/17 . Objective • Understand difference between Arrays and ArrayLists • Using Array Lists 11-2 . Arrays – Objects or Not? •](https://reader031.vdocuments.us/reader031/viewer/2022041008/5eb26427047b9f39ed030513/html5/thumbnails/26.jpg)
Homework
• #5, 6, 7, 8, 9
• Finish lab
• Read 11.5