1 / 52

Chapter 9 Arrays

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.

aderes
Download Presentation

Chapter 9 Arrays

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 { double field3; int field2; int field1; } • class Example • { • int field1; • int field2; • double field3; • } Changing the order does not change the access Is a class structured? Did you change your answer?

  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]; What type of values can be stored in each cell ?

  14. One-Dimensional Arrays • float[] realNumbers = new float[10]; How do you get values into the cells ?

  15. One-Dimensional Arrays • Array Initializers • int[] numbers = {4.93, -15.2, 0.5, 1.67}; Initializers do the instantiation and storing in with the declaration

  16. One-Dimensional Arrays • Accessing Individual Components Indexing expression

  17. One-Dimensional Arrays Indexing Expression Indexing Expression Place into which a value is stored; value is changed Place from which a value is extracted; value is not changed

  18. One-Dimensional Arrays What happens if you try to access value[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 What does this code fragment do ? if ((letter >= 'A' && letter <= 'Z' || letter >= 'a' && letter <= 'z')) { index = (int)Character.toUpperCase(letter) - (int)'A'; lettrCount[index] = letterCount[index] + 1; }

  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/Type • groceryItems 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. Arrays of Objects Date[] bigEvents = new Date[10]; 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 [ 0 ] [ 1 ] . . . [ 9 ] . . . 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. Arrays of Objects • 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; • } What is passed as an argument?

  32. Two-Dimensional Arrays Two- dimensional arrays can be used to represent tables such as this 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. Two-Dimensional Arrays Initializer Lists • int[][] hits = {{ 2, 1, 0, 3, 2 }, • { 1, 1, 2, 3 }, • { 1, 0, 0, 0, 0 }, • { 0, 1, 2, 1, 1 }}; hits [0] [1] [2] [3] [4] 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 to give talks to young people; I used colored wires to demonstrate different computer 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

More Related