Download presentation
Presentation is loading. Please wait.
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.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.