Presentation is loading. Please wait.

Presentation is loading. Please wait.

Array Lists and Arrays Sections 13.1, 13.3 Common Errors 13.1, 13.2

Similar presentations


Presentation on theme: "Array Lists and Arrays Sections 13.1, 13.3 Common Errors 13.1, 13.2"— Presentation transcript:

1 Array Lists and Arrays Sections 13.1, 13.3 Common Errors 13.1, 13.2
Chapter 13 Array Lists and Arrays Sections 13.1, 13.3 Common Errors 13.1, 13.2 Fran Trees Drew University

2 Dr. Seuss again: "Too Many Daves"
Did I ever tell you that Mrs. McCave Had twenty-three sons, and she named them all Dave? Well, she did. And that wasn't a smart thing to do. You see, when she wants one, and calls out "Yoo-Hoo! Come into the house, Dave!" she doesn't get one. All twenty-three Daves of hers come on the run! Fran Trees Drew University

3 "Too Many Daves" This makes things quite difficult at the McCaves' As you can imagine, with so many Daves. And often she wishes that, when they were born, She had named one of them Bodkin Van Horn. And one of them Hoos-Foos. And one of them Snimm. And one of them Hot-Shot. And one Sunny Jim. Another one Putt-Putt. Another one Moon Face. Another one Marvin O'Gravel Balloon Face. And one of them Zanzibar Buck-Buck McFate... But she didn't do it. And now it's too late. Fran Trees Drew University

4 This is not all that bad…..
Come into the house, Dave!" she doesn't get one. All twenty-three Daves of hers come on the run! Fran Trees Drew University

5 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. Fran Trees Drew University

6 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. Fran Trees Drew University

7 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. Fran Trees Drew University

8 interface java.util.List
boolean add(Object x) // appends x to the end of list; returns true int size() // returns the number of elements in this list Object get(int index) // returns the element at the specified position in this list. Object set(int index, Object x) // replaces the element at index with x // returns the element formerly at the specified position Iterator iterator() ListIterator listIterator() Fran Trees Drew University

9 class java.util.ArrayList implements java.util.List
Methods in addition to the List methods: void add(int index, Object x) // inserts x at position index, sliding elements // at position index and higher to the right // (adds 1 to their indices) and adjusts size Object 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. Fran Trees Drew University

10 An example: import java.util.ArrayList; import java.util.Iterator;
public class ArrayListTest { public static void main (String [] arg) System.out.println("\nArrayListTest \n"); ArrayList aList = new ArrayList(); aList.add("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)); } Fran Trees Drew University

11 Using an Iterator import java.util.ArrayList;
import java.util.Iterator; public class ArrayListTest { public static void main (String [] arg) System.out.println("\nArrayListTest \n"); ArrayList aList = new ArrayList(); aList.add("Dan"); aList.add("George"); aList.add("Mary"); System.out.println("aList contains:"); Iterator it = aList.iterator(); while (it.hasNext()) System.out.println(it.next()); } Fran Trees Drew University

12 What happens? ArrayList students = new ArrayList();
students.add("Mary"); students.add("James"); students.add("Kevin"); students.add(1, "Tanya"); String temp = (String)students.get(3); System.out.println(temp); students.remove(2); students.set(1, "John"); System.out.println(students.size()); Fran Trees Drew University

13 What happens? Mary James Kevin Mary Tanya James Kevin Mary Tanya Kevin
ArrayList students = new ArrayList(); students.add("Mary"); students.add("James"); students.add("Kevin"); students.add(1, "Tanya"); String temp = (String)students.get(3); System.out.println(temp); students.remove(2); students.set(1, "John"); Mary James Kevin Mary Tanya James Kevin temp Mary Tanya Kevin Mary John Kevin Fran Trees Drew University

14 An ArrayList is a sequence of objects.
Array lists can hold any kind of object. ArrayList athletes = new ArrayList(); ArrayList csci6 = new ArrayList(); ArrayList accounts = new ArrayList(); The ArrayList method add adds an Object. The ArrayList method get returns an Object. Fran Trees Drew University

15 An ArrayList is a sequence of objects.
Array lists can hold any kind of object. ArrayList athletes = new ArrayList(); ArrayList csci6 = new ArrayList(); ArrayList accounts = new ArrayList(); The ArrayList method add adds an Object. The ArrayList method get returns an Object. Fran Trees Drew University

16 An ArrayList is a sequence of objects.
boolean add(Object x) Can I do this??? ArrayList aList = new ArrayList(); aList.add(new Athlete("Dan","Smith","SkiJumping")); aList.add(new Athlete("George","Harris","Swimming")); aList.add(new Athlete("Mary","Jones","Tennis")); Fran Trees Drew University

17 An ArrayList is a sequence of objects.
boolean add(Object x) Can I do this??? ArrayList aList = new ArrayList(); aList.add(new Athlete("Dan","Smith","SkiJumping")); aList.add(new Athlete("George","Harris","Swimming")); aList.add(new Athlete("Mary","Jones","Tennis")); Yes…an Athlete IS-A Object. Fran Trees Drew University

18 An ArrayList is a sequence of objects.
Object get(int x) Can I do this??? ArrayList aList = new ArrayList(); aList.add(new Athlete("Dan","Smith","SkiJumping")); aList.add(new Athlete("George","Harris","Swimming")); aList.add(new Athlete("Mary","Jones","Tennis")); for(int x = 0; x < aList.size(); x++) { System.out.println(aList.get(x).getName()); } Fran Trees Drew University

19 An ArrayList is a sequence of objects.
Object get(int x) Can I do this??? ArrayList aList = new ArrayList(); aList.add(new Athlete("Dan","Smith","SkiJumping")); aList.add(new Athlete("George","Harris","Swimming")); aList.add(new Athlete("Mary","Jones","Tennis")); for(int x = 0; x < aList.size(); x++) { System.out.println(aList.get(x).getName()); } NO… getName() is NOT a method of Object. Fran Trees Drew University

20 An ArrayList is a sequence of objects.
Object get(int x) Fix it. ArrayList aList = new ArrayList(); aList.add(new Athlete("Dan","Smith","SkiJumping")); aList.add(new Athlete("George","Harris","Swimming")); aList.add(new Athlete("Mary","Jones","Tennis")); for(int x = 0; x < aList.size(); x++) { System.out.println(aList.get(x).getName()); } Fran Trees Drew University

21 An ArrayList is a sequence of objects.
Object get(int x) Fix it. ArrayList aList = new ArrayList(); aList.add(new Athlete("Dan","Smith","SkiJumping")); aList.add(new Athlete("George","Harris","Swimming")); aList.add(new Athlete("Mary","Jones","Tennis")); for(int x = 0; x < aList.size(); x++) { System.out.println (((Athlete)aList.get(x)).getName() + "\n"); } Fran Trees Drew University

22 An ArrayList is a sequence of objects.
Object get(int x) I prefer….. ArrayList aList = new ArrayList(); aList.add(new Athlete("Dan","Smith","SkiJumping")); aList.add(new Athlete("George","Harris","Swimming")); aList.add(new Athlete("Mary","Jones","Tennis")); for(int x = 0; x < aList.size(); x++) { Athlete fit = (Athlete)aList.get(x); System.out.println(fit.getName() + "\n"); } Fran Trees Drew University

23 Some notes about ArrayList
An ArrayList is a sequence of objects. Each object in an array list has an integer position (index). get returns an Object. You need to cast the object to the element class. Position numbers in an array list are 0..size() – 1. Adding or removing elements from an array list is more work than it seems! Fran Trees Drew University

24 A bit more about…. Casting Fran Trees Drew University

25 private int catNumber; Cat (int i) catNumber = i; }
public class Cat { private int catNumber; Cat (int i) catNumber = i; } public void print() System.out.println("Cat #" + catNumber); Fran Trees Drew University

26 private int dogNumber; Dog(int i) dogNumber = i; } public void print()
public class Dog { private int dogNumber; Dog(int i) dogNumber = i; } public void print() System.out.println("Dog #" + dogNumber); Fran Trees Drew University

27 import java.util.ArrayList; public class CatsAndDogs {
public static void main(String[] args) ArrayList cats = new ArrayList(); for (int i = 0; i < 7; i++) cats.add(new Cat(i)); } cats.add(new Dog(7)); //Can I do this? for(int i = 0; i < cats.size(); i++) System.out.println(cats.get(i)); // Does this print anything? // If so, what? Fran Trees Drew University

28 What happened? What is this? ArrayList cats = new ArrayList();
for (int i = 0; i < 7; i++) { cats.add(new Cat(i)); } cats.add(new Dog(7)); for(int i = 0; i < cats.size(); i++){ System.out.println(cats.get(i)); What happened? What is this? Fran Trees Drew University

29 ArrayList cats = new ArrayList(); for (int i = 0; i < 7; i++) {
cats.add(new Cat(i)); } cats.add(new Dog(7)); for(int i = 0; i < cats.size(); i++) ((Cat) cats.get(i)).print(); // Does this print anything? // If so, what? Fran Trees Drew University

30 Prints….. WHY? Cat #0 Cat #1 Cat #2 Cat #3 Cat #4 Cat #5 Cat #6
Exception in thread "main" java.lang.ClassCastException: Dog at CatsAndDogs.main(CatsAndDogs.java:15) Press any key to continue... WHY? Fran Trees Drew University

31 Hmmmm…. Object obj = new Cat(3); obj.print(); //Can I do this?
Fran Trees Drew University

32 Hmmmm…. Object obj = new Cat(3); *obj.print(); // Nope!
// The compiler can determine only that the object is an Object and could possible refer to a Dog object or a Rectangle object, so it doesn't allow the reference *. Fran Trees Drew University

33 But…. Object obj = new Cat(3); ((Cat)obj).print();
// But I can do THIS. // What about the parenthesis? Fran Trees Drew University

34 And…. Cat aCat = new Cat(3); Object obj = aCat; //Can I do THIS?
Fran Trees Drew University

35 And…. Cat aCat = new Cat(3); Object obj = aCat;
//Yep! I can assign a reference variable to the class that it extends. aCat can be assigned to the class that it extends(Object). This is Java's one-way assignment compatibility. aCat IS A Object. Fran Trees Drew University

36 What about…. Cat aCat = new Cat(3); Object obj = aCat; obj.print();
Fran Trees Drew University

37 What about…. Cat aCat = new Cat(3); Object obj = aCat; obj.print();
//nope ! Fran Trees Drew University

38 Must…. Cat aCat = new Cat(3); Object obj = aCat; ((Cat)obj).print();
//yep ! Fran Trees Drew University

39 Let's try more… Fran Trees Drew University

40 Can I do this? Object anObject = null; String stringA = "hello";
anObject = stringA; Fran Trees Drew University

41 Object anObject = null; String stringA = "hello";
anObject = stringA; //OK Fran Trees Drew University

42 Can I do this? Object anObject = null; String stringA = "hello";
stringA = anObject; Fran Trees Drew University

43 Object anObject = null; String stringA = "hello"; stringA = anObject;
needs cast Fran Trees Drew University

44 Can I do this? Object anObject = null; String stringA = "hello";
Comparable c = new Comparable(); Fran Trees Drew University

45 Object anObject = null; String stringA = "hello";
Comparable c = new Comparable(); No, Comparable is an interface. Fran Trees Drew University

46 Can I do this? Object anObject = null; String stringA = "hello";
Comparable c = new String(); Fran Trees Drew University

47 Object anObject = null; String stringA = "hello";
Comparable c = new String(); Yes, String implements Comparable Fran Trees Drew University

48 A bit more about toString() Fran Trees Drew University

49 What happens? public class StringTest {
public static void main(String[] args) ArrayList stringList = new ArrayList(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); System.out.println(stringList); } Fran Trees Drew University

50 WHY???? public class StringTest {
public static void main(String[] args) ArrayList stringList = new ArrayList(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); System.out.println(stringList); } [Fran, Marie, Joe] Let's look at the API! Fran Trees Drew University

51 What happens? public class Strings {
public static void main(String[] args){ ArrayList stringList = new ArrayList(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); String aStringInList = stringList.get(0); // is this OK? } Fran Trees Drew University

52 no…but public class Strings { public static void main(String[] args)
ArrayList stringList = new ArrayList(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); String aStringInList = (String)stringList.get(0); //NOW this is OK. } //What about parentheses? } Fran Trees Drew University

53 What happens? public class Strings {
public static void main(String[] args){ ArrayList stringList = new ArrayList(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); System.out.println(stringList.get(0)); //Can I do this?????? } Fran Trees Drew University

54 What happens? public class Strings {
public static void main(String[] args) ArrayList stringList = new ArrayList(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); System.out.println(stringList.get(0)); //YEP….what is printed? } Fran Trees Drew University

55 What happens? public class Strings {
public static void main(String[] args) ArrayList stringList = new ArrayList(); stringList.add("Fran"); stringList.add("Marie"); stringList.add("Joe"); System.out.println(stringList.get(0)); //Fran } Fran Trees Drew University

56 AGAIN… An ArrayList is a sequence of objects.
Array lists can hold any kind of object. The ArrayList method add adds an Object. The ArrayList method get returns an Object. What is we want our ArrayList to hold ints or doubles? Fran Trees Drew University

57 Wrapper Classes Another look at the API Integer(int value)
class java.lang.Integer implements java.lang.Comparable Integer(int value) int intValue() boolean equals(Object other) String toString() int compareTo(Object other) Another look at the API Fran Trees Drew University

58 Wrapper Classes Another look at the API Double(double value)
class java.lang.Double implements java.lang.Comparable Double(double value) double doubleValue() boolean equals(Object other) String toString() int compareTo(Object other) Another look at the API Fran Trees Drew University

59 Filling the ArrayList for (int k = 1; k <= 20; k++) {
nbrs.add(new Integer(k)); } Fran Trees Drew University

60 Printing the ArrayList
for (int k = 0; k < nbrs.size(); k++) { System.out.print("\t" + nbrs.get(k)); } System.out.println(); Fran Trees Drew University

61 Printing the sum of the integer values in the ArrayList
int sum = 0; Integer temp; for (int k = 0; k < nbrs.size(); k++) { temp = (Integer)nbrs.get(k); sum += temp.intValue(); } System.out.println("sum equals: " + sum); Fran Trees Drew University

62 ArrayList Applications
Finding values, counting, max and min, average, median, mode….. But first….LOTTERY Fran Trees Drew University

63 CRC cards This program will simulate the TV Lottery drawing for the Pick-6 New Jersey Lottery game. In this game, balls are placed in a container that keeps them popping around in some random movements. The "LotteryPicker" picks a ball from the container (6 times). The chosen balls are displayed. Fran Trees Drew University

64 Candidate classes Ball Game Picker Hopper Fran Trees Drew University

65 A lottery game Judy Hromcik
3 classes Ball Class the numbered item Picker Class the person that gets the ball from the Hopper Hopper Class the jug-like container that holds the balls Fran Trees Drew University

66 Ball Class public class Ball {
public Ball() //default constructor-sets value to 0 public Ball(int val) //sets value to val public int value() //returns value on ball public String toString() //displays ball private int myValue; } Fran Trees Drew University

67 Hopper Class public class Hopper { public Hopper()
//adds default # balls to ArrayList myBalls public Hopper(int numBalls) //adds numBalls # balls to ArrayList my Balls public int size() //returns # balls in Hopper public Ball getBall(int j) removes the jth ball from Hopper private ArrayList myBalls; private static int DEFAULT_NUM_BALLS = <some default int goes here>; } Fran Trees Drew University

68 Picker Class public class Picker { public Picker()
//gets a Hopper (default) public Picker(int numBalls) //gets a Hopper with numBalls balls public Ball chooseBall() //chooses a random ball from Hopper private static Random generator = new Random(); Hopper myHopper; } Fran Trees Drew University

69 Two implementations: Text version Graphics version
Both use SAME three classes Fran Trees Drew University


Download ppt "Array Lists and Arrays Sections 13.1, 13.3 Common Errors 13.1, 13.2"

Similar presentations


Ads by Google