Presentation is loading. Please wait.

Presentation is loading. Please wait.

COS 260 DAY 11 Tony Gauvin.

Similar presentations


Presentation on theme: "COS 260 DAY 11 Tony Gauvin."— Presentation transcript:

1 COS 260 DAY 11 Tony Gauvin

2 Agenda Mini-quiz Five Today Friday the 13th Fixed Size Collections
Questions Assignment 2 corrected Good Results Assignment 3 posted Due Oct 20 Assignment 4 will be posted soon Mini-quiz Five Today Friday the 13th Password “BreakingTheCode” Fixed Size Collections

3 Capstone Project Capstone Project Description Fall 2017.pdf
October Proposal Due ed to Tony in Blackboard October 27 Progress Report ed to Tony in Blackboard November 16 Progress Report ed to Tony in Blackboard November Progress Report ed to Tony in Blackboard December All Deliverables & Presentation Due Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

4 Fixed-sized collections
Objects First with Java Fixed-sized collections Introduction to arrays 6.0 © David J. Barnes and Michael Kölling

5 Features of arrays Fixed in length, unlike ArrayList, HashSet, HashMap, etc. Use a special syntax. For historical reasons. Objects with no methods. Methods are provided by other classes; e.g., java.util.Arrays. Methods that are static. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

6 Fixed-size collections
Objects First with Java Fixed-size collections Sometimes the maximum collection size can be pre-determined. A special fixed-size collection type is available: an array. Unlike the flexible List collections, arrays can store object references or primitive-type values (without autoboxing). © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

7 The weblog-analyzer project
Objects First with Java The weblog-analyzer project Web server records details of each access. Supports analysis tasks: Most popular pages. Busiest periods. How much data is being delivered. Broken references. Analyze accesses by hour – there is a fixed number of these in a day! © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

8 Log file analyzer Parses entries from a log weblog.txt
Year month day hour min Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

9 Creating an array object
Objects First with Java Creating an array object Array type — does not contain size public class LogAnalyzer { private int[] hourCounts; private LogfileReader reader; public LogAnalyzer() hourCounts = new int[24]; reader = new LogfileReader(); } ... Array object creation — specifies size © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

10 Objects First with Java
The hourCounts array © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

11 Objects First with Java
Using an array Square-bracket notation is used to access an array element: hourCounts[...] Elements are used like ordinary variables. The target of an assignment: hourCounts[hour] = ...; In an expression: hourCounts[hour]++; if(hourCounts[hour] > 0) ... © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

12 Objects First with Java
Standard array use private int[] hourCounts; private String[] names; ... hourCounts = new int[24]; hourcounts[i] = 0; hourcounts[i]++; System.out.println(hourcounts[i]); declaration creation use © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

13 Objects First with Java
Array literals The size is inferred from the data. private int[] numbers = { 3, 15, 4, 5 }; declaration, creation and initialization Array literals in this form can only be used in declarations. Related uses require new: numbers = new int[] { , 15, 4, 5 }; © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

14 Array Literals 3 15 4 5 1 private int[] numbers = { 3, 15, 4, 5 };
Declare numbers Create Initialize Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

15 Objects First with Java
Array length private int[] numbers = { 3, 15, 4, 5 }; int n = numbers.length; not a method call! NB: length is a field rather than a method. It’s value cannot be changed – ‘fixed size’. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

16 Objects First with Java
The for loop There are two variations of the for loop, for-each and for. The for loop is often used to iterate a fixed number of times. Often used with a variable that changes a fixed amount on each iteration. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

17 Objects First with Java
For loop pseudo-code General form of the for loop for(initialization; condition; post-body action) { statements to be repeated } Equivalent while-loop version initialization; while(condition) { statements to be repeated post-body action } © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

18 Objects First with Java
Array iteration for loop version for(int hour = 0; hour < hourCounts.length; hour++) { System.out.println(hour + ": " + hourCounts[hour]); } while loop version int hour = 0; while(hour < hourCounts.length) { System.out.println(hour + ": " + hourCounts[hour]); hour++; } © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

19 Array-related methods
System has static arraycopy. java.util.Arrays contains static utility methods for processing arrays: binarySearch fill sort ArrayList has toArray. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

20 Objects First with Java
Practice Given an array of numbers, print out all the numbers in the array, using a for loop. int[] numbers = { 4, 1, 22, 9, 14, 3, 9}; for ... © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

21 Objects First with Java
Practice Fill an array with the Fibonacci sequence. int[] fib = new int[howMany]; fib[0] = 0; fib[1] = 1; for(...) ... © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

22 for loop with bigger step
Objects First with Java for loop with bigger step // Print multiples of 3 that are below 40. for(int num = 3; num < 40; num = num + 3) { System.out.println(num); } © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

23 for loop and Iterator No post-body action required.
for(Iterator<Track> it = tracks.iterator(); it.hasNext(); ) { Track track = it.next(); if(track.getArtist().equals(artist)) { it.remove(); } © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

24 Objects First with Java
Review Arrays are appropriate where a fixed-size collection is required. Arrays use a special syntax. For loops are used when an index variable is required. For loops offer an alternative to while loops when the number of repetitions is known. Used with a regular step size. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. © David J. Barnes and Michael Kölling

25 The automaton project An array of ‘cells’.
Each cell maintains a simple state. Usually a small numerical value. E.g., on/off or alive/dead. The states change according to simple rules. Changes affected by neighboring states. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

26 Cell states – blank cells are in state 0
A simple automaton nextState[i] = (state[i-1] + state[i] + state[i+1]) % 2; Step Cell states – blank cells are in state 0 + 1 2 3 4 5 6 © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

27 The conditional operator
Choose between two values: condition ? value1 : value1 for(int cellValue : state) { System.out.print(cellValue == 1 ? '+' : ' '); } System.out.println(); © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

28 Further advanced material

29 Arrays of more than one dimension
Array syntax supports multiple dimensions. E.g., 2D array to represent a game board, or a grid of cells. Can be thought of as an array of arrays. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

30 The brain project Cell[][] cells; ...
cells = new Cell[numRows][numCols]; for(int row = 0; row < numRows; row++) { for(int col = 0; col < numCols; col++) { cells[row][col] = new Cell(); } © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

31 Alternative iteration
for(int row = 0; row < cells.length; row++) { Cell[] nextRow = cells[row]; for(int col = 0; col < nextRow.length; col++) { nextRow[col] = new Cell(); } ‘Array of array’ style. Requires no access to numRows and numCols. Works with irregular shape arrays, which are supported in Java. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

32 Arrays and Streams java.util.Arrays has several stream() methods that return a Stream based on an array. IntStream is a Stream of int values. Instream.range() creates a sequential IntStream. toArray returns an array from a Stream. © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.


Download ppt "COS 260 DAY 11 Tony Gauvin."

Similar presentations


Ads by Google