52
Chapter 9 Arrays

Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

  • View
    227

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

Chapter 9

Arrays

Page 2: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

2

Knowledge Goals

• Understand the difference between atomic and composite data types

• Understand the difference between unstructured and structured composite data types

• Know how Java implements arrays• Know how an array is passed as an argument

Page 3: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

3

Knowledge Goals

• Understand the difference between an array and the information stored or referenced within the array

• Understand the role of an array in structuring data within a problem

• Understand the role of a two-dimensional array in representing a table with rows and columns

• Know how a two-dimensional array is constructed as an array of arrays

Page 4: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

4

Skill Goals

• Declare and instantiate a one-dimensional array

• Access and manipulate the individual components in a one-dimensional array where the elements are• Atomic types• Composite types

• Use an initializer list to instantiate a one-dimensional array

Page 5: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

5

Skill Goals

• Declare a two-dimensional array• Perform fundamental operations on a two-

dimensional array:• Access a component of the array• Process the array by rows• Process the array by columns

• Declare a two-dimensional array as a parameter

• Declare and process a multidimensional array

Page 6: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

6

Java Data Types

Page 7: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

7

Java Data Types

Try expressing these definitions in words

Page 8: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

8

Java Data Types

Composite data type

A data type that allows a collection of values to be associated with an identifier of that type

Unstructured data type

A collection of components that are not organized with respect to one another

Structured data type

An organized collection of components; the organization determines the means used to access individual components

Is a class structured?

Page 9: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

9

Java Data Types

class Example

{

int field1;

int field2;

double field3;

}

class Example

{

double field3;

int field2;

int field1;

}

Is a class structured? Did you change your answer?

Changing the order does not change the access

Page 10: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

10

One-Dimensional Arrays

Data structure

The implementation of a composite data type

Note the difference between a data structure (implementation of any composite type) and a structured data type (a composite type that is structured)

Page 11: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

11

One-Dimensional Arrays

One-dimensional array

A structured collection of components, all of the same type, that is given a single name; each component is accessed by an index that indicates the component's position within the collection

Class

composite, unstructured

heterogeneous

access by field name

Array

composite, structured

homogeneous

access by position

Page 12: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

12

One-Dimensional Arrays

Declare

Instantiate

Page 13: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

13

One-Dimensional Arrays

int[] numbers = new int[4];

Whattype ofvaluescan be

stored ineach cell

?

Page 14: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

14

One-Dimensional Arrays

float[] realNumbers = new float[10];

How do you

getvaluesinto the

cells?

Page 15: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

15

One-Dimensional Arrays

Array Initializersint[] numbers = {4.93, -15.2, 0.5, 1.67};

Initializersdo the

instantiationand

storing inwith the

declaration

Page 16: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

16

One-Dimensional Arrays

Accessing Individual Components

Indexing expression

Page 17: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

17

One-Dimensional Arrays

IndexingExpression

IndexingExpression

Place into whicha value is stored;value is changed

Place from whicha value is extracted;value is not changed

Page 18: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

18

One-Dimensional Arrays

Whathappens

if youtry to

accessvalue[1000]

?

Page 19: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

19

One-Dimensional Arrays

Out-of-bounds array index

An index that is either less than 0 or greater than the array size minus 1, causing an ArrayIndexoutOfBoundsException to be thrown

Length

A public instance variable associated with each instantiated array, accessed by array name .length

Use length to avoid out-of-bounds indexes

Page 20: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

20

One-Dimensional Arrays

Aggregate Array Operations

What does the following expression return?

numbers == values

Page 21: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

21

One-Dimensional Arrays

Now, what does the following expression return?

numbers == values

Page 22: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

22

One-Dimensional Arrays

System provides two useful array methods

first = second.clone(); // duplicates second import java.util.Arrays;

Arrays.equals(first, second); // item-by-item check

System.out.println(first == second);

System.out.println(Arrays.equals(first, second);

What is printed?

Page 23: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

23

More Examples

What does this code segment do?

totalOccupants = 0;

for (int aptNo = 0; aptNo < occupants.length; aptNo++)

totalOccupants = totalOccupants +occupants[aptNo];

Page 24: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

24

More Examples

if ((letter >= 'A' && letter <= 'Z' || letter >= 'a' && letter <= 'z')){ index = (int)Character.toUpperCase(letter) - (int)'A'; lettrCount[index] = letterCount[index] + 1;}

What doesthis codefragment

do?

Page 25: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

25

Arrays of Objects

String[] groceryItems = new String[10];

for (index = 0; index < grocerItems.length; index++)

{

groceryItems[index] = inFile.nextLine();

}

Page 26: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

26

Arrays of Objects

Expression Class/TypegroceryItems Reference to an array

groceryItems[0] Reference to a string

groceryItems[0].charAt() A character

groceryItems[10] Error

Base address

The memory address of the first element of the array

"Reference to" is the base address

Page 27: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

27

Arrays of Objects

How do Array.equals and clone operate with arrays of objects?

Array.equals uses the == operator to compare arrays, so the addresses are compared

clone uses the = operator, so the addresses are copied

Array.equals(numbers, numbers.clone()) ?

Page 28: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

28

Date[] bigEvents = new Date[10];

Arrays of Objects

[ 0 ]

[ 1 ] .

.

.

[ 9 ]

bigEvents Expression Class/Type

bigEvents Array

bigEvents[0] Date

bigEvents[0].month String

bigEvents[0].day int

bigEvents[0].year int

bigEvents[0].month.charAt(0) char

Date. ..

Date. ..

Date. ..

Page 29: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

29

Arrays of Objects

length is the number of slots assigned to the array

What if the array doesn’t have valid data in each of these slots?

Keep a counter of how many slots have valid data and use this counter when processing the array

More about this type of processing in Chapter 11

Page 30: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

30

Arrays of Objects

The Vector class

A class available in java.util that offers functionality similar to that of a one-dimensional array of objects

Objects of class Vector can grow and shrink; the size is not fixed for its lifetime

However, internal resizing operations are time consuming

What do you think is the Vector class data structure?

Page 31: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

31

public static double average(int[] grades)

// Calculates and returns the average grade in an

// array of grades.

// Assumption: All array slots have valid data.

{

int total = 0;

for (int i = 0; i < grades.length; i++)

total = total + grades[i];

return (double) total / (double) grades.length;

}

Arrays of Objects

What is passed as an argument?

Page 32: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

32

Two-Dimensional Arrays

Two-dimensional

arrayscan beused to

representtables

such asthis map

Page 33: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

33

Two-Dimensional Arrays

Two-dimensional array

A collection of homogeneous components,

structured in two dimensions (referred to as

rows and columns); each component is

accessed by a pair of indexes representing

the component’s position within each

dimension

Page 34: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

34

Two-Dimensional Arrays

Page 35: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

35

Two-Dimensional Arrays

Page 36: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

36

Two-Dimensional Arrays

Can you predict how each item is accessed?

Page 37: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

37

Two-Dimensional Arrays

Page 38: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

38

Two-Dimensional Arrays

Actual Java implementation

Page 39: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

39

Two-Dimensional Arrays

hiTemp.length is the number of rows

hiTemp[2].length is the number of columns in row two

Page 40: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

40

Two-Dimensional Arrays

int[][] hiTemp = new int[6][12];

for (int col = 0; col < hiTemp[2].length; col++)

System.out.println(data[2][col]);

What is printed?

Page 41: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

41

Two-Dimensional Arrays

Subarray processing by row

Page 42: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

42

Two-Dimensional Arrays

for (int row = 0; row < rowsFilled; row++)

{

// Array is not ragged

total = 0;

for (int col = 0; col < colsFilled; col++)

total = total + data[row][col];

outFile.println("Row sum: " + total);}

Page 43: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

43

Two-Dimensional Arrays

Subarray processing by column

Page 44: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

44

Two-Dimensional Arrays

for (int col = 0; col < colsFilled; col++)

{

// Array is not ragged

total = 0;

for (int row = 0; row < rowsFilled; row++)

total = total + data[row][col];

outFile.println("Column sum: " + total);}

Page 45: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

45

Two-Dimensional Arrays

When processing by row,

the outer loop is ______ (row, column)?

the inner loop is ______ (row, column)?

When processing by column,

the outer loop is ______ (row, column)?

the inner loop is ______ (row, column)?

Page 46: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

46

int[][] hits = {{ 2, 1, 0, 3, 2 },

{ 1, 1, 2, 3 },

{ 1, 0, 0, 0, 0 },

{ 0, 1, 2, 1, 1 }};

[0] [1] [2] [3] [4]

Two-Dimensional Arrays

hits

Initializer Lists

2 1 0 3 2

1 1 2 3

1 0 0 0 0

0 1 2 1 1

Page 47: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

47

Three-Dimensional Arrays

Array

A collection of homogeneous components ordered on N dimensions (N>=1); each component is accessed by N indexes, each of which represents the component's position within that dimension

Page 48: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

48

Extras

I loved togive talks to

young people; I used colored

wires todemonstrate

differentcomputer

speeds

Who am I?

Page 49: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

49

Extras - GUI Track

Rather than using JOptionPane, you can build your own window using class JFrame

JFrame outFrame = new JFrame();

outFrame consists of the outside of the window frame that holds controls and the content pane which shows the content

Page 50: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

50

Extras - GUI Track

Page 51: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

51

Extras - GUI Track

Handling your own window with JFrame requires

declaring and instantiating a JFrame object setting the size of the object declaring and getting a pane setting the layout manager for the pane adding text to the pane making the frame visible

Page 52: Chapter 9 Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference between unstructured and

52

Extras - GUI Track

JFrame objectwith a

text field