chapter 9 arrays
DESCRIPTION
Chapter 9 Arrays. 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. Knowledge Goals. - PowerPoint PPT PresentationTRANSCRIPT
Chapter 9
Arrays
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
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
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
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
6
Java Data Types
7
Java Data Types
Try expressing these definitions in words
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?
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
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)
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
12
One-Dimensional Arrays
Declare
Instantiate
13
One-Dimensional Arrays
int[] numbers = new int[4];
Whattype ofvaluescan be
stored ineach cell
?
14
One-Dimensional Arrays
float[] realNumbers = new float[10];
How do you
getvaluesinto the
cells?
15
One-Dimensional Arrays
Array Initializersint[] numbers = {4.93, -15.2, 0.5, 1.67};
Initializersdo the
instantiationand
storing inwith the
declaration
16
One-Dimensional Arrays
Accessing Individual Components
Indexing expression
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
18
One-Dimensional Arrays
Whathappens
if youtry to
accessvalue[1000]
?
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
20
One-Dimensional Arrays
Aggregate Array Operations
What does the following expression return?
numbers == values
21
One-Dimensional Arrays
Now, what does the following expression return?
numbers == values
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?
23
More Examples
What does this code segment do?
totalOccupants = 0;
for (int aptNo = 0; aptNo < occupants.length; aptNo++)
totalOccupants = totalOccupants +occupants[aptNo];
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?
25
Arrays of Objects
String[] groceryItems = new String[10];
for (index = 0; index < grocerItems.length; index++)
{
groceryItems[index] = inFile.nextLine();
}
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
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()) ?
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. ..
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
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?
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?
32
Two-Dimensional Arrays
Two-dimensional
arrayscan beused to
representtables
such asthis map
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
34
Two-Dimensional Arrays
35
Two-Dimensional Arrays
36
Two-Dimensional Arrays
Can you predict how each item is accessed?
37
Two-Dimensional Arrays
38
Two-Dimensional Arrays
Actual Java implementation
39
Two-Dimensional Arrays
hiTemp.length is the number of rows
hiTemp[2].length is the number of columns in row two
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?
41
Two-Dimensional Arrays
Subarray processing by row
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);}
43
Two-Dimensional Arrays
Subarray processing by column
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);}
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)?
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
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
48
Extras
I loved togive talks to
young people; I used colored
wires todemonstrate
differentcomputer
speeds
Who am I?
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
50
Extras - GUI Track
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
52
Extras - GUI Track
JFrame objectwith a
text field