Top Banner
© A+ Computer Science - www.apluscompsci.com
72

© A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

Dec 21, 2015

Download

Documents

Hugo King
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 2: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Arraylist is a class that houses anarray. 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 referenceat index/position/subscript 0.

Page 3: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

0 1 2 3 4 5 6 7 8 9

nums 0 0 0 0 0 0 0 0 0 0

int[] nums = new int[10]; //Java int array

An array is a group of items all of the same type which are accessed through a single identifier.

Page 4: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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(); //legalArrayList list = new ArrayList();//legal

ray and list store Object references.

Page 5: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

list

nothing

null

null

ArrayList list;

list is a reference to an ArrayList.

Page 6: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

0x213

new ArrayList();

ArrayLists are Objects.

[]

Page 7: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

list0x213

0x213

ArrayList list = new ArrayList();

list is a reference to an ArrayList.

[]

Page 8: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Example of an ArrayList withoutthe type <T> identifier:

List ray = new ArrayList(); ray.add("hello");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));

ray stores Object references.

OUTPUT

hc

casting (must cast in order to send messages to the object)

Page 9: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 10: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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.

Page 11: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

With Java 5, you can now specify whichtype of reference you want to store in the ArrayList.

ArrayList<String> words;words = new ArrayList<String>();

ArrayList<Double> decNums;decNums = new ArrayList<Double>();

Page 12: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

With Java 5, you can now specify whichtype of reference you want to store in the ArrayList.

ArrayList<Integer> bigStuff;bigStuff = new ArrayList<Integer>();

ArrayList<Student> studentList;studentList = new ArrayList<Student>();

Page 13: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

List<String> ray;ray = new ArrayList<String>(); ray.add("hello");ray.add(“school");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.

OUTPUT

hc

Page 14: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 15: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 16: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayListfrequently used methods

Name Useadd(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) (similar to z[index]=item)

get(index) returns the item at index (similar to z[index] )

size() returns the # of items in the list (similar to z.length)

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

import java.util.ArrayList;

Page 17: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<String> words;words = new ArrayList<String>();

words.add(0,"it");words.add("is");words.add("a");words.add("lie");System.out.println(words);

OUTPUT

[it, is, a, lie]

Page 18: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Integer> nums;nums = new ArrayList<Integer>();

nums.add(34);nums.add(0,99);nums.add(21);nums.add(11);System.out.println(nums);

OUTPUT

[99, 34, 21, 11]

Page 19: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 20: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Integer> ray;ray = new ArrayList<Integer>();

ray.add(23);ray.add(11);ray.set(0,66);ray.add(53);ray.set(1,93);ray.add(22);System.out.println(ray);

OUTPUT

[66, 93, 53, 22]

Page 21: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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.

Page 22: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Double> ray;ray = new ArrayList<Double>();ray.add(23.23);ray.add(11.11);ray.add(12.1);ray.add(65.6);

System.out.println(ray.get(0));System.out.println(ray.get(3));

OUTPUT23.2365.6

.get(index) returns the reference stored at the index!

Page 23: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Integer> ray;ray = new ArrayList<Integer>();ray.add(23);ray.add(11);ray.add(12);ray.add(65);

for(int i=0; i<ray.size(); i++) System.out.println(ray.get(i));

OUTPUT23111265

.get(index) returns the reference stored at the index!

Page 24: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Integer> ray;ray = new ArrayList<Integer>();ray.add(23);ray.add(11);ray.add(12);ray.add(65);

for( int val : ray ) System.out.println(val);

OUTPUT23111265

val receives one value from ray each iteration.

Page 25: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 26: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 27: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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]

Page 28: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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]

Page 29: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 30: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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]

Page 31: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 32: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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;

Page 33: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

• Purpose: To get familiar with ArrayLists

• Make a copy of your EmployeeNames and EmployeeNamesTester and name them EmployeeArrayList and EmployeeArrayListTester.

• Change all occurrences of arrays to ArrayLists.

Page 34: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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

231153

Page 35: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 36: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 37: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Primitive typesObjects

(wrapper class)byte Byte

short Short

int Integer

long Long

float Float

double Double

char Character

boolean Boolean

== .equals()

Page 38: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Before Java 5 added in autoboxingand autounboxing, you had tomanually wrap primitives.

Integer x = new Integer(98);orint y = 56;x= new Integer(y);

Page 39: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Java now wraps automatically.

Integer num1 = 99;andInteger num1 = new Integer(99);

These two lines are equivalent.

Page 40: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Java now wraps automatically.

Double num1 = 99.1;andDouble num1 = new Double(99.1);

These two lines are equivalent.

Page 41: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Before Java 5 added in autoboxingand autounboxing, you had tomanually 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();

Page 42: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

OUTPUT

33

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.

Page 43: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Double dub = 9.3;double prim = dub;System.out.println(prim);

int num = 12;Integer big = num;System.out.println(big.compareTo(12));System.out.println(big.compareTo(17));System.out.println(big.compareTo(10));

OUTPUT

9.30-11

Page 44: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 45: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Integer> ray;ray = new ArrayList<Integer>();

//add some values to rayint total = 0;for(Integer num : ray){ //this line shows the AP preferred way //it 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);

OUTPUT153

Page 46: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 47: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 48: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 49: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

public class Creature implements Comparable{ private int size;

public Creature(int girth) { size=girth; }

public void setSize(int girth) { size=girth; }

public String toString() { return “” + size; }

//Other methods not shown here}

Instance variableInstance variable

Constructor initializes size of Creature

Constructor initializes size of Creature

toString() returns the String representation of

Creature

toString() returns the String representation of

Creature

Page 50: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Creature> creatureList;creatureList = new ArrayList<Creature>();creatureList.add(new Creature(4));creatureList.add(new Creature(9));creatureList.add(new Creature(1));

creatureList 0x12 0x32 0xD2

0 1 2

Creature 4

Creature 9

Creature 1

Page 51: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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).setSize(7);System.out.println(creatureList.get(0));

System.out.println(creatureList.get(2));

OUTPUT471

Page 52: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

creatureList.get(0)

What does the . dot do?

setSize(7);.

What does this return?

Creature

0x242

0x242

The . dot grants access to the Object at the stored address.

Page 53: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 54: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 55: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Ends with an sEnds with an s

Page 56: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Collectionsfrequently used methods

Name Usesort(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 left or right y locations

reverse(x) Reverses the order of the items in x

import java.util.Collections;

Page 57: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Integer> ray;ray = new ArrayList<Integer>();

ray.add(23);ray.add(11);ray.add(66);ray.add(53);Collections.sort(ray);

System.out.println(ray);System.out.println(Collections.binarySearch(ray,677));System.out.println(Collections.binarySearch(ray,66));

OUTPUT[11, 23, 53, 66]-53

Page 58: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Integer> ray = ArrayList<Integer>();

ray.add(23);ray.add(11);ray.add(53);ray.add(100);System.out.println(ray);

Collections.rotate(ray,2);System.out.println(ray);

Collections.rotate(ray,2); // back to [23, 11, 53, 100]Collections.reverse(ray);System.out.println(ray);

OUTPUT[23, 11, 53, 100][53, 100, 23, 11][100, 53, 11, 23]

Page 59: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList<Integer> ray;ray = new ArrayList<Integer>();ray.add(0);ray.add(20);ray.add(50);System.out.println(ray);

Collections.fill(ray,33);System.out.println(ray);

OUTPUT[0, 20, 50][33, 33, 33]

Page 60: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 61: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 62: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayListfrequently used methods

Name Usecontains(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.

Page 63: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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]-12[23, 11, 66, 53]falsetrue

Page 64: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 65: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 66: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Page 67: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

The following are important interfaces included in the Java language:

CollectionList

Page 68: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

Collection

Map

List Set

Sub Interfaces-extends

Implementing Classes

ArrayListLinkedListVectorStack AbstractSet

HashSetLinkedHashSet

TreeSet

SortedSet

Sub Interfaces-extends

Implementing Classes

TreeMap

SortedMap

Sub Interfaces-extends

Implementing Classes

Implementing Classes

HashMapHashTable

Page 69: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

The Collection interface is the parent of Listand Set. The Collection interface has manymethods including add(), clear(), remove(), and size().

Collection

List Set

others not shown

Page 70: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

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

Page 71: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com

ArrayList is a descendant of List and Collection, but because List and Collection are interfaces, you cannot instantiate them.

Collection bad = new Collection(); //illegalList justAsBad = new List(); //illegal

List list = new ArrayList(); //legalArrayList aList = new ArrayList(); //legalCollection col = new ArrayList(); //legal **** Legal only if using methods from Collection interfacelist, aList, and col store Object references.

Page 72: © A+ Computer Science - . Arraylist is a class that houses an array. It is internally implemented in Java as an array. An ArrayList.

© A+ Computer Science -

www.apluscompsci.com