Grouping objects
Indefinite iteration - the while loop
2
Konsep Penting
• Collections
• Loops
• Iterators
• Arrays
3
The requirement to group
objects
• Many applications involve collections of
objects:
– Personal organizers.
– Library catalogs.
– Student-record system.
• The number of items to be stored varies.
– Items added.
– Items deleted.
4
A personal notebook
• Notes may be stored.
• Individual notes can be viewed.
• There is no limit to the number of
notes.
• It will tell how many notes are
stored.
• Explore the notebook1 project.
5
Class libraries
• Collections of useful classes.
• Java calls its libraries, packages.
• Grouping objects is a recurring
requirement.
– The java.util package contains
classes for doing this.
6
import java.util.ArrayList;
/**
* ...
*/
public class Notebook
{
// Storage for an arbitrary number of notes.
private ArrayList notes;
/**
* Perform any initialization required for the
* notebook.
*/
public Notebook()
{
notes = new ArrayList();
}
...
}
7
Object structures with
collections
8
Features of the collection
• It increases its capacity as necessary.
• It keeps a private count:
– size() accessor.
• It keeps the objects in order.
• Details of how all this is done are
hidden.
– Does that matter? Does not knowing how
prevent us from using it?
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
9
Using the collection
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public class MusicOrganizer
{
private ArrayList<String> files;
...
public void addFile(String filename)
{
files.add(filename);
}
public int getNumberOfFiles()
{
return files.size();
}
...
}
Adding a new file
Returning the number of files
(delegation)
10
Index numbering
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
11
Retrieving an object
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Could be invalid !
public void listFile(int index)
{
String filename = files.get(index);
System.out.println(filename);
}
Print the file name Retrieve the file name
12
Retrieving an object
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Index validity checks
public void listFile(int index)
{
if(index >= 0 &&
index < files.size()) {
String filename = files.get(index);
System.out.println(filename);
}
else {
// This is not a valid index.
}
}
Retrieve and print the file name
Needed? (Error message?)
13
Removal may affect
numbering
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
14
The general utility of indices
• Using integers to index collections
has a general utility:
– ‘next’ is: index + 1
– ‘previous’ is: index – 1
– ‘last’ is: list.size() – 1
– ‘the first three’ is: the items at indices
0, 1, 2
• We could also think about accessing
items in sequence: 0, 1, 2, …
15
Review
• Collections allow an arbitrary number
of objects to be stored.
• Class libraries usually contain tried-
and-tested collection classes.
• Java’s class libraries are called
packages.
• We have used the ArrayList class
from the java.util package.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
16
Review
• Items may be added and removed.
• Each item has an index.
• Index values may change if items are
removed (or further items added).
• The main ArrayList methods are
add, get, remove and size.
• ArrayList is a parameterized or
generic type.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
17
Interlude:
Some popular errors...
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
18
/**
* Print out info (number of entries).
*/
public void showStatus()
{
if(files.size() == 0); {
System.out.println("Organizer is empty");
}
else {
System.out.print("Organizer holds ");
System.out.println(files.size() + " files");
}
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
What’s wrong here?
19
/**
* Print out info (number of entries).
*/
public void showStatus()
{
if(files.size() == 0);
{
System.out.println("Organizer is empty");
}
else {
System.out.print("Organizer holds ");
System.out.println(files.size() + "files");
}
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
This is the same as before!
20
/**
* Print out info (number of entries).
*/
public void showStatus()
{
if(files.size() == 0)
;
{
System.out.println("Organizer is empty");
}
else {
System.out.print("Organizer holds ");
System.out.println(files.size() + "files");
}
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
This is the same again
21
/**
* Print out info (number of entries).
*/
public void showStatus()
{
if(files.size() == 0) {
;
}
{
System.out.println("Organizer is empty");
}
else {
System.out.print("Organizer holds ");
System.out.println(files.size() + "files");
}
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
and the same again…
22
/**
* Print out info (number of entries).
*/
public void showStatus()
{
if(isEmpty = true) {
System.out.println("Organizer is empty");
}
else {
System.out.print("Organizer holds ");
System.out.println(files.size() + "files");
}
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
This time I have a boolean field
called ‘isEmpty’... What’s wrong here?
23
/**
* Print out info (number of entries).
*/
public void showStatus()
{
if(isEmpty == true) {
System.out.println("Organizer is empty");
}
else {
System.out.print("Organizer holds ");
System.out.println(files.size() + "files");
}
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
This time I have a boolean field
called ‘isEmpty’... The correct version
24
/**
* Store a new file in the organizer. If the
* organizer is full, save it and start a new one.
*/
public void addFile(String filename)
{
if(files.size() == 100)
files.save();
// starting new list
files = new ArrayList<String>();
files.add(filename);
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
What’s wrong here?
25
/**
* Store a new file in the organizer. If the
* organizer is full, save it and start a new one.
*/
public void addFile(String filename)
{
if(files.size == 100)
files.save();
// starting new list
files = new ArrayList<String>();
files.add(filename);
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
This is the same.
26
/**
* Store a new file in the organizer. If the
* organizer is full, save it and start a new one.
*/
public void addFile(String filename)
{
if(files.size == 100) {
files.save();
// starting new list
files = new ArrayList<String>();
}
files.add(filename);
}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
The correct version
Grouping objects
Collections and the for-each loop
28
Main concepts to be covered
• Collections
• Loops: the for-each loop
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
29
Iteration
• We often want to perform some actions an
arbitrary number of times.
– E.g., print all the file names in the organizer.
How many are there?
• Most programming languages include loop
statements to make this possible.
• Java has several sorts of loop statement.
– We will start with its for-each loop.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
30
Iteration fundamentals
• We often want to repeat some
actions over and over.
• Loops provide us with a way to
control how many times we repeat
those actions.
• With collections, we often want to
repeat things once for every object
in a particular collection.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
31
For-each loop pseudo code
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
for(ElementType element : collection) {
loop body
}
For each element in collection, do the things in the loop body.
loop header
for keyword
Statement(s) to be repeated
Pseudo-code expression of the actions
of a for-each loop
General form of the for-each loop
32
Iterating over a collection
Iterator it = myCollection.iterator();
while(it.hasNext()) {
call it.next() to get the next object
do something with that object
}
java.util.Iterator
Returns an Iterator
object
public void listNotes()
{
Iterator it = notes.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
33
Review
• Loop statements allow a block of
statements to be repeated.
• The for-each loop allows iteration over a
whole collection.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Grouping objects
Indefinite iteration - the while loop
35
Main concepts to be covered
• The difference between bounded
and unbounded iteration.
• The while loop
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
36
Search tasks are indefinite
• We cannot predict, in advance, how
many places we will have to look.
• Although, there may well be an
absolute limit – i.e., checking every
possible location.
• ‘Infinite loops’ are also possible.
– Through error or the nature of the task.
37
The while loop
• A for-each loop repeats the loop body
for each object in a collection.
• Sometimes we require more variation
than this.
• We use a boolean condition to decide
whether or not to keep going.
• A while loop provides this control.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
38
While loop pseudo code
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
while(loop condition) {
loop body
}
while we wish to continue, do the things in the loop body
boolean test
while keyword
Statements to be repeated
Pseudo-code expression of the actions of
a while loop
General form of a while loop
39
Looking for your keys
while(the keys are missing) {
look in the next place;
}
Or:
while(not (the keys have been found)) {
look in the next place;
}
40
Looking for your keys
boolean searching = true;
while(searching) {
if(they are in the next place) {
searching = false;
}
}
Suppose we don’t find them?
41
A Java example
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
/**
* List all file names in the organizer.
*/
public void listAllFiles()
{
for(String filename : files) {
System.out.println(filename);
}
}
for each filename in files, print out filename
42
A Java example
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
/**
* List all file names in the organizer.
*/
public void listAllFiles()
{
int index = 0;
while(index < files.size()) {
String filename = files.get(index);
System.out.println(filename);
index++;
}
}
Increment index by 1
while the value of index is less than the size of the collection,
get and print the next file name, and then increment index
43
for-each versus while
• for-each:
– easier to write.
– safer: it is guaranteed to stop.
• while:
– we don’t have to process the whole
collection.
– doesn’t even have to be used with a
collection.
– take care: could be an infinite loop.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
44
Finishing a search
• How do we finish a search?
• Either there are no more items
to check:
index >= files.size()
• Or the item has been found:
found == true
found
! searching
45
Continuing a search
• With a while loop we need to state
the condition for continuing:
• So the loop’s condition will be the
opposite of that for finishing:
index < files.size() && ! found
index < files.size() && searching
• NB: ‘or’ becomes ‘and’ when
inverting everything.
46
Searching a collection
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
int index = 0;
boolean found = false;
while(index < files.size() && !found) {
String file = files.get(index);
if(file.contains(searchString)) {
// We don't need to keep looking.
found = true;
}
else {
index++;
}
}
// Either we found it at index,
// or we searched the whole collection.
47
The String class
• The String class is defined in the
java.lang package.
• It has some special features that
need a little care.
• In particular, comparison of String
objects can be tricky.
48
Side note: String equality
if(input == "bye") {
...
}
if(input.equals("bye")) {
...
}
Always use .equals for text equality.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
tests identity
tests equality
49
Identity vs equality 1
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Other (non-String) objects:
person1 == person2 ?
“Fred”
:Person
person1 person2
“Jill”
:Person
50
Identity vs equality 2
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Other (non-String) objects:
person1 == person2 ?
“Fred”
:Person
person1 person2
“Fred”
:Person
51
Identity vs equality 3
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Other (non-String) objects:
person1 == person2 ?
“Fred”
:Person
person1 person2
“Fred”
:Person
52
Identity vs equality (Strings)
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
"bye"
:String
input
"bye"
:String
String input = reader.getInput();
if(input == "bye") {
...
}
== ?
 (may be) false!
== tests identity
53
Identity vs equality (Strings)
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
"bye"
:String
input
"bye"
:String
String input = reader.getInput();
if(input.equals("bye")) {
...
}
equals ?
 true!
equals tests
equality
54Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Grouping objects
Iterators
Iterator and iterator()
• Collections have an iterator()
method.
• This returns an Iterator object.
• Iterator<E> has three methods:
– boolean hasNext()
– E next()
– void remove()
57
Using an Iterator object
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Iterator<ElementType> it = myCollection.iterator();
while(it.hasNext()) {
call it.next() to get the next object
do something with that object
}
java.util.Iterator
returns an Iterator object
public void listAllFiles()
{
Iterator<Track> it = files.iterator();
while(it.hasNext()) {
Track tk = it.next();
System.out.println(tk.getDetails());
}
}
58
Iterator mechanics
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
59Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
:Element
myList:List
:Element :Element
:Iterator
myList.iterator()
:Element
60Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
:Element :Element :Element
:Iterator
hasNext()? ✔
next()
Element e = iterator.next();
:Element
:Iterator
myList:List
61Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
:Element :Element :Element
hasNext()? ✔
next()
:Element
:Iterator :Iterator
myList:List
62Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
:Element :Element :Element
hasNext()? ✔
next()
:Element
:Iterator :Iterator
myList:List
63Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
:Element :Element :Element
hasNext()? ✗
:Element
:Iterator
myList:List
64
Index versus Iterator
• Ways to iterate over a collection:
– for-each loop.
• Use if we want to process every element.
– while loop.
• Use if we might want to stop part way through.
• Use for repetition that doesn't involve a collection.
– Iterator object (new).
• Use if we might want to stop part way through (with while).
• Often used with collections where indexed access is not
very efficient, or impossible.
• Use to remove from a collection.
• Iteration is an important programming pattern.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
65
Removing from a collection
Iterator<Track> it = tracks.iterator();
while(it.hasNext()) {
Track t = it.next();
String artist = t.getArtist();
if(artist.equals(artistToRemove)) {
it.remove();
}
}
Use the Iterator’s remove method.
66
Review
• Loop statements allow a block of
statements to be repeated.
• The for-each loop allows iteration over a
whole collection.
• The while loop allows the repetition to be
controlled by a boolean expression.
• All collection classes provide special
Iterator objects that provide sequential
access to a whole collection.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Grouping objects
Arrays
68
What is an Array?
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
69
The size of an array is fixed
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
70
Arrays in Java
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
71
Declaring Arrays
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
72
Constructing Arrays
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
73
The length variable for 1D Arrays
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
74
The length variable for 2D Arrays
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
75
Example
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
76
Array Initializer
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
77
Enhanced for Statement
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
78Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
79
Enhanced forStatement
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
80
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.
• Arrays use a special syntax.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
81
Creating an array object
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public class LogAnalyzer
{
private int[] hourCounts;
private LogfileReader reader;
public LogAnalyzer()
{
hourCounts = new int[24];
reader = new LogfileReader();
}
...
}
Array object creation
— specifies size
Array variable declaration
— does not contain size
82
The hourCounts array
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
83
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]++;
adjusted = hourCounts[hour] – 3;
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
84
Standard array use
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
private int[] hourCounts;
private String[] names;
...
hourCounts = new int[24];
...
hourcounts[i] = 0;
hourcounts[i]++;
System.out.println(hourcounts[i]);
declaration
creation
use
85
Array literals
• Array literals in this form can only be
used in declarations.
• Related uses require new:
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
private int[] numbers = { 3, 15, 4, 5 };
declaration,
creation and
initialization
numbers = new int[] {
3, 15, 4, 5
};
• The size is inferred from the data.
86
Array length
• NB: length is a field rather than a
method!
• It cannot be changed – ‘fixed size’.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
private int[] numbers = { 3, 15, 4, 5 };
int n = numbers.length;
no brackets!
87
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
(Increment by the same number each
time).
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

More Related Content

PDF
Java OOP Programming language (Part 4) - Collection
PPTX
Basic java, java collection Framework and Date Time API
PDF
4java Basic Syntax
PPT
Bab5 bluej
PDF
PPT
Building gui
PDF
Java OOP Programming language (Part 8) - Java Database JDBC
PPT
O fchapter05
Java OOP Programming language (Part 4) - Collection
Basic java, java collection Framework and Date Time API
4java Basic Syntax
Bab5 bluej
Building gui
Java OOP Programming language (Part 8) - Java Database JDBC
O fchapter05

What's hot (20)

PPT
Groupingobject
PPTX
Map-Reduce and Apache Hadoop
PPSX
Collections - Array List
PPT
JDK1.7 features
PPT
Polymorphism 9
PDF
Java Collections API
PDF
Java Programming - 06 java file io
PDF
Lecture 4: Data Types
PDF
DCN Practical
PDF
Advanced Java Practical File
PDF
04 sorting
PDF
Important java programs(collection+file)
PDF
Core java pract_sem iii
DOCX
Collections generic
PPTX
Chapter ii(oop)
PDF
Collections in Java Notes
PDF
.NET Multithreading and File I/O
PDF
Android Architecure Components - introduction
PDF
Refactoring In Tdd The Missing Part
PPTX
Java 103
Groupingobject
Map-Reduce and Apache Hadoop
Collections - Array List
JDK1.7 features
Polymorphism 9
Java Collections API
Java Programming - 06 java file io
Lecture 4: Data Types
DCN Practical
Advanced Java Practical File
04 sorting
Important java programs(collection+file)
Core java pract_sem iii
Collections generic
Chapter ii(oop)
Collections in Java Notes
.NET Multithreading and File I/O
Android Architecure Components - introduction
Refactoring In Tdd The Missing Part
Java 103
Ad

Similar to 4 gouping object (20)

PDF
Lecture 4 - Object Interaction and Collections
PPT
Core & advanced java classes in mumbai
PPT
Chapter08
PDF
principles of proramming language in cppg
DOCX
ECET 370 Achievement Education -- www.ecet370.com
DOCX
ECET 370 HELPS Redefined Education--ecet370helps.com
DOCX
ECET 370 HELPS Education Counseling--ecet370helps.com
PPTX
Pptchdtdtfygugyxthgihhihigugufydtdfzrzrzrtdyfyfy
DOCX
project2.classpathproject2.project project2 .docx
PDF
ECET 370 Education Planning--ecet370.com
PDF
ECET 370 Redefined Education--ecet370.com
DOCX
ECET 370 Effective Communication/tutorialrank.com
PPT
02._Object-Oriented_Programming_Concepts.ppt
DOCX
ECET 370 Success Begins/Newtonhelp.com
PDF
Gradleintroduction 111010130329-phpapp01
PDF
Gradle Introduction
PPTX
Chapter4.pptxdgdhgfshsfhtgjsjryjusryjryjursyj
PDF
Property Based Testing in PHP
DOCX
ECET 370 Inspiring Innovation--ecet370.com
PPTX
Unit - IV (1).pptx
Lecture 4 - Object Interaction and Collections
Core & advanced java classes in mumbai
Chapter08
principles of proramming language in cppg
ECET 370 Achievement Education -- www.ecet370.com
ECET 370 HELPS Redefined Education--ecet370helps.com
ECET 370 HELPS Education Counseling--ecet370helps.com
Pptchdtdtfygugyxthgihhihigugufydtdfzrzrzrtdyfyfy
project2.classpathproject2.project project2 .docx
ECET 370 Education Planning--ecet370.com
ECET 370 Redefined Education--ecet370.com
ECET 370 Effective Communication/tutorialrank.com
02._Object-Oriented_Programming_Concepts.ppt
ECET 370 Success Begins/Newtonhelp.com
Gradleintroduction 111010130329-phpapp01
Gradle Introduction
Chapter4.pptxdgdhgfshsfhtgjsjryjusryjryjursyj
Property Based Testing in PHP
ECET 370 Inspiring Innovation--ecet370.com
Unit - IV (1).pptx
Ad

More from Robbie AkaChopa (20)

PPTX
Monetisasi blog 1
PDF
[Www.akachopa.com]sbmptn 2013 tpa
PDF
[Www.akachopa.com]sbmptn 2013 tkdu
PDF
[Www.akachopa.com]sbmptn 2013 soshum
PDF
[Www.akachopa.com]sbmptn 2013 saintek
PDF
Jadwal pembekalan kkn 73 kelompok iv fak. pertanian, fak. teknik 12 13 juni 2...
PDF
Hasil seleksisnmptn2014
PDF
Snmptn 2012 tbs [akachopa.com]
PDF
Snmptn 2012 ipa [akachopa.com]
PDF
Snmptn 2012 tpa [akachopa.com]
PDF
Snmptn 2012 ips [akachopa.com]
PDF
Soal stat
PDF
10. deadlock
PDF
09 sinkronisasi proses
PDF
Inferensi statistik satu populasi
PDF
Inferensi statistik
PDF
Tabel distribusi
PDF
Indonesian quran-wb
PDF
Al quran-pdf
PPT
Presentation
Monetisasi blog 1
[Www.akachopa.com]sbmptn 2013 tpa
[Www.akachopa.com]sbmptn 2013 tkdu
[Www.akachopa.com]sbmptn 2013 soshum
[Www.akachopa.com]sbmptn 2013 saintek
Jadwal pembekalan kkn 73 kelompok iv fak. pertanian, fak. teknik 12 13 juni 2...
Hasil seleksisnmptn2014
Snmptn 2012 tbs [akachopa.com]
Snmptn 2012 ipa [akachopa.com]
Snmptn 2012 tpa [akachopa.com]
Snmptn 2012 ips [akachopa.com]
Soal stat
10. deadlock
09 sinkronisasi proses
Inferensi statistik satu populasi
Inferensi statistik
Tabel distribusi
Indonesian quran-wb
Al quran-pdf
Presentation

Recently uploaded (20)

PDF
Hazard Identification & Risk Assessment .pdf
PDF
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PDF
AI-driven educational solutions for real-life interventions in the Philippine...
PDF
FOISHS ANNUAL IMPLEMENTATION PLAN 2025.pdf
PPTX
Computer Architecture Input Output Memory.pptx
PPTX
Introduction to pro and eukaryotes and differences.pptx
PPTX
Unit 4 Computer Architecture Multicore Processor.pptx
PPTX
CHAPTER IV. MAN AND BIOSPHERE AND ITS TOTALITY.pptx
PPTX
A powerpoint presentation on the Revised K-10 Science Shaping Paper
PDF
Empowerment Technology for Senior High School Guide
PDF
advance database management system book.pdf
PPTX
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PPTX
TNA_Presentation-1-Final(SAVE)) (1).pptx
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PDF
Uderstanding digital marketing and marketing stratergie for engaging the digi...
PPTX
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
PDF
International_Financial_Reporting_Standa.pdf
Hazard Identification & Risk Assessment .pdf
CISA (Certified Information Systems Auditor) Domain-Wise Summary.pdf
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
AI-driven educational solutions for real-life interventions in the Philippine...
FOISHS ANNUAL IMPLEMENTATION PLAN 2025.pdf
Computer Architecture Input Output Memory.pptx
Introduction to pro and eukaryotes and differences.pptx
Unit 4 Computer Architecture Multicore Processor.pptx
CHAPTER IV. MAN AND BIOSPHERE AND ITS TOTALITY.pptx
A powerpoint presentation on the Revised K-10 Science Shaping Paper
Empowerment Technology for Senior High School Guide
advance database management system book.pdf
Chinmaya Tiranga Azadi Quiz (Class 7-8 )
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
TNA_Presentation-1-Final(SAVE)) (1).pptx
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
Uderstanding digital marketing and marketing stratergie for engaging the digi...
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
Practical Manual AGRO-233 Principles and Practices of Natural Farming
International_Financial_Reporting_Standa.pdf

4 gouping object

  • 2. 2 Konsep Penting • Collections • Loops • Iterators • Arrays
  • 3. 3 The requirement to group objects • Many applications involve collections of objects: – Personal organizers. – Library catalogs. – Student-record system. • The number of items to be stored varies. – Items added. – Items deleted.
  • 4. 4 A personal notebook • Notes may be stored. • Individual notes can be viewed. • There is no limit to the number of notes. • It will tell how many notes are stored. • Explore the notebook1 project.
  • 5. 5 Class libraries • Collections of useful classes. • Java calls its libraries, packages. • Grouping objects is a recurring requirement. – The java.util package contains classes for doing this.
  • 6. 6 import java.util.ArrayList; /** * ... */ public class Notebook { // Storage for an arbitrary number of notes. private ArrayList notes; /** * Perform any initialization required for the * notebook. */ public Notebook() { notes = new ArrayList(); } ... }
  • 8. 8 Features of the collection • It increases its capacity as necessary. • It keeps a private count: – size() accessor. • It keeps the objects in order. • Details of how all this is done are hidden. – Does that matter? Does not knowing how prevent us from using it? Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 9. 9 Using the collection Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class MusicOrganizer { private ArrayList<String> files; ... public void addFile(String filename) { files.add(filename); } public int getNumberOfFiles() { return files.size(); } ... } Adding a new file Returning the number of files (delegation)
  • 10. 10 Index numbering Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 11. 11 Retrieving an object Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Could be invalid ! public void listFile(int index) { String filename = files.get(index); System.out.println(filename); } Print the file name Retrieve the file name
  • 12. 12 Retrieving an object Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Index validity checks public void listFile(int index) { if(index >= 0 && index < files.size()) { String filename = files.get(index); System.out.println(filename); } else { // This is not a valid index. } } Retrieve and print the file name Needed? (Error message?)
  • 13. 13 Removal may affect numbering Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 14. 14 The general utility of indices • Using integers to index collections has a general utility: – ‘next’ is: index + 1 – ‘previous’ is: index – 1 – ‘last’ is: list.size() – 1 – ‘the first three’ is: the items at indices 0, 1, 2 • We could also think about accessing items in sequence: 0, 1, 2, …
  • 15. 15 Review • Collections allow an arbitrary number of objects to be stored. • Class libraries usually contain tried- and-tested collection classes. • Java’s class libraries are called packages. • We have used the ArrayList class from the java.util package. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 16. 16 Review • Items may be added and removed. • Each item has an index. • Index values may change if items are removed (or further items added). • The main ArrayList methods are add, get, remove and size. • ArrayList is a parameterized or generic type. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 17. 17 Interlude: Some popular errors... Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 18. 18 /** * Print out info (number of entries). */ public void showStatus() { if(files.size() == 0); { System.out.println("Organizer is empty"); } else { System.out.print("Organizer holds "); System.out.println(files.size() + " files"); } } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling What’s wrong here?
  • 19. 19 /** * Print out info (number of entries). */ public void showStatus() { if(files.size() == 0); { System.out.println("Organizer is empty"); } else { System.out.print("Organizer holds "); System.out.println(files.size() + "files"); } } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling This is the same as before!
  • 20. 20 /** * Print out info (number of entries). */ public void showStatus() { if(files.size() == 0) ; { System.out.println("Organizer is empty"); } else { System.out.print("Organizer holds "); System.out.println(files.size() + "files"); } } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling This is the same again
  • 21. 21 /** * Print out info (number of entries). */ public void showStatus() { if(files.size() == 0) { ; } { System.out.println("Organizer is empty"); } else { System.out.print("Organizer holds "); System.out.println(files.size() + "files"); } } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling and the same again…
  • 22. 22 /** * Print out info (number of entries). */ public void showStatus() { if(isEmpty = true) { System.out.println("Organizer is empty"); } else { System.out.print("Organizer holds "); System.out.println(files.size() + "files"); } } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling This time I have a boolean field called ‘isEmpty’... What’s wrong here?
  • 23. 23 /** * Print out info (number of entries). */ public void showStatus() { if(isEmpty == true) { System.out.println("Organizer is empty"); } else { System.out.print("Organizer holds "); System.out.println(files.size() + "files"); } } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling This time I have a boolean field called ‘isEmpty’... The correct version
  • 24. 24 /** * Store a new file in the organizer. If the * organizer is full, save it and start a new one. */ public void addFile(String filename) { if(files.size() == 100) files.save(); // starting new list files = new ArrayList<String>(); files.add(filename); } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling What’s wrong here?
  • 25. 25 /** * Store a new file in the organizer. If the * organizer is full, save it and start a new one. */ public void addFile(String filename) { if(files.size == 100) files.save(); // starting new list files = new ArrayList<String>(); files.add(filename); } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling This is the same.
  • 26. 26 /** * Store a new file in the organizer. If the * organizer is full, save it and start a new one. */ public void addFile(String filename) { if(files.size == 100) { files.save(); // starting new list files = new ArrayList<String>(); } files.add(filename); } Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling The correct version
  • 27. Grouping objects Collections and the for-each loop
  • 28. 28 Main concepts to be covered • Collections • Loops: the for-each loop Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 29. 29 Iteration • We often want to perform some actions an arbitrary number of times. – E.g., print all the file names in the organizer. How many are there? • Most programming languages include loop statements to make this possible. • Java has several sorts of loop statement. – We will start with its for-each loop. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 30. 30 Iteration fundamentals • We often want to repeat some actions over and over. • Loops provide us with a way to control how many times we repeat those actions. • With collections, we often want to repeat things once for every object in a particular collection. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 31. 31 For-each loop pseudo code Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling for(ElementType element : collection) { loop body } For each element in collection, do the things in the loop body. loop header for keyword Statement(s) to be repeated Pseudo-code expression of the actions of a for-each loop General form of the for-each loop
  • 32. 32 Iterating over a collection Iterator it = myCollection.iterator(); while(it.hasNext()) { call it.next() to get the next object do something with that object } java.util.Iterator Returns an Iterator object public void listNotes() { Iterator it = notes.iterator(); while(it.hasNext()) { System.out.println(it.next()); } }
  • 33. 33 Review • Loop statements allow a block of statements to be repeated. • The for-each loop allows iteration over a whole collection. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 35. 35 Main concepts to be covered • The difference between bounded and unbounded iteration. • The while loop Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 36. 36 Search tasks are indefinite • We cannot predict, in advance, how many places we will have to look. • Although, there may well be an absolute limit – i.e., checking every possible location. • ‘Infinite loops’ are also possible. – Through error or the nature of the task.
  • 37. 37 The while loop • A for-each loop repeats the loop body for each object in a collection. • Sometimes we require more variation than this. • We use a boolean condition to decide whether or not to keep going. • A while loop provides this control. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 38. 38 While loop pseudo code Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling while(loop condition) { loop body } while we wish to continue, do the things in the loop body boolean test while keyword Statements to be repeated Pseudo-code expression of the actions of a while loop General form of a while loop
  • 39. 39 Looking for your keys while(the keys are missing) { look in the next place; } Or: while(not (the keys have been found)) { look in the next place; }
  • 40. 40 Looking for your keys boolean searching = true; while(searching) { if(they are in the next place) { searching = false; } } Suppose we don’t find them?
  • 41. 41 A Java example Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling /** * List all file names in the organizer. */ public void listAllFiles() { for(String filename : files) { System.out.println(filename); } } for each filename in files, print out filename
  • 42. 42 A Java example Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling /** * List all file names in the organizer. */ public void listAllFiles() { int index = 0; while(index < files.size()) { String filename = files.get(index); System.out.println(filename); index++; } } Increment index by 1 while the value of index is less than the size of the collection, get and print the next file name, and then increment index
  • 43. 43 for-each versus while • for-each: – easier to write. – safer: it is guaranteed to stop. • while: – we don’t have to process the whole collection. – doesn’t even have to be used with a collection. – take care: could be an infinite loop. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 44. 44 Finishing a search • How do we finish a search? • Either there are no more items to check: index >= files.size() • Or the item has been found: found == true found ! searching
  • 45. 45 Continuing a search • With a while loop we need to state the condition for continuing: • So the loop’s condition will be the opposite of that for finishing: index < files.size() && ! found index < files.size() && searching • NB: ‘or’ becomes ‘and’ when inverting everything.
  • 46. 46 Searching a collection Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling int index = 0; boolean found = false; while(index < files.size() && !found) { String file = files.get(index); if(file.contains(searchString)) { // We don't need to keep looking. found = true; } else { index++; } } // Either we found it at index, // or we searched the whole collection.
  • 47. 47 The String class • The String class is defined in the java.lang package. • It has some special features that need a little care. • In particular, comparison of String objects can be tricky.
  • 48. 48 Side note: String equality if(input == "bye") { ... } if(input.equals("bye")) { ... } Always use .equals for text equality. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling tests identity tests equality
  • 49. 49 Identity vs equality 1 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Other (non-String) objects: person1 == person2 ? “Fred” :Person person1 person2 “Jill” :Person
  • 50. 50 Identity vs equality 2 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Other (non-String) objects: person1 == person2 ? “Fred” :Person person1 person2 “Fred” :Person
  • 51. 51 Identity vs equality 3 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Other (non-String) objects: person1 == person2 ? “Fred” :Person person1 person2 “Fred” :Person
  • 52. 52 Identity vs equality (Strings) Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling "bye" :String input "bye" :String String input = reader.getInput(); if(input == "bye") { ... } == ?  (may be) false! == tests identity
  • 53. 53 Identity vs equality (Strings) Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling "bye" :String input "bye" :String String input = reader.getInput(); if(input.equals("bye")) { ... } equals ?  true! equals tests equality
  • 54. 54Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 56. Iterator and iterator() • Collections have an iterator() method. • This returns an Iterator object. • Iterator<E> has three methods: – boolean hasNext() – E next() – void remove()
  • 57. 57 Using an Iterator object Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Iterator<ElementType> it = myCollection.iterator(); while(it.hasNext()) { call it.next() to get the next object do something with that object } java.util.Iterator returns an Iterator object public void listAllFiles() { Iterator<Track> it = files.iterator(); while(it.hasNext()) { Track tk = it.next(); System.out.println(tk.getDetails()); } }
  • 58. 58 Iterator mechanics Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 59. 59Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling :Element myList:List :Element :Element :Iterator myList.iterator() :Element
  • 60. 60Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling :Element :Element :Element :Iterator hasNext()? ✔ next() Element e = iterator.next(); :Element :Iterator myList:List
  • 61. 61Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling :Element :Element :Element hasNext()? ✔ next() :Element :Iterator :Iterator myList:List
  • 62. 62Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling :Element :Element :Element hasNext()? ✔ next() :Element :Iterator :Iterator myList:List
  • 63. 63Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling :Element :Element :Element hasNext()? ✗ :Element :Iterator myList:List
  • 64. 64 Index versus Iterator • Ways to iterate over a collection: – for-each loop. • Use if we want to process every element. – while loop. • Use if we might want to stop part way through. • Use for repetition that doesn't involve a collection. – Iterator object (new). • Use if we might want to stop part way through (with while). • Often used with collections where indexed access is not very efficient, or impossible. • Use to remove from a collection. • Iteration is an important programming pattern. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 65. 65 Removing from a collection Iterator<Track> it = tracks.iterator(); while(it.hasNext()) { Track t = it.next(); String artist = t.getArtist(); if(artist.equals(artistToRemove)) { it.remove(); } } Use the Iterator’s remove method.
  • 66. 66 Review • Loop statements allow a block of statements to be repeated. • The for-each loop allows iteration over a whole collection. • The while loop allows the repetition to be controlled by a boolean expression. • All collection classes provide special Iterator objects that provide sequential access to a whole collection. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 68. 68 What is an Array? Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 69. 69 The size of an array is fixed Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 70. 70 Arrays in Java Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 71. 71 Declaring Arrays Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 72. 72 Constructing Arrays Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 73. 73 The length variable for 1D Arrays Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 74. 74 The length variable for 2D Arrays Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 75. 75 Example Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 76. 76 Array Initializer Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 77. 77 Enhanced for Statement Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 78. 78Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 79. 79 Enhanced forStatement Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 80. 80 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. • Arrays use a special syntax. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 81. 81 Creating an array object Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling public class LogAnalyzer { private int[] hourCounts; private LogfileReader reader; public LogAnalyzer() { hourCounts = new int[24]; reader = new LogfileReader(); } ... } Array object creation — specifies size Array variable declaration — does not contain size
  • 82. 82 The hourCounts array Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 83. 83 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]++; adjusted = hourCounts[hour] – 3; Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
  • 84. 84 Standard array use Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling private int[] hourCounts; private String[] names; ... hourCounts = new int[24]; ... hourcounts[i] = 0; hourcounts[i]++; System.out.println(hourcounts[i]); declaration creation use
  • 85. 85 Array literals • Array literals in this form can only be used in declarations. • Related uses require new: Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling private int[] numbers = { 3, 15, 4, 5 }; declaration, creation and initialization numbers = new int[] { 3, 15, 4, 5 }; • The size is inferred from the data.
  • 86. 86 Array length • NB: length is a field rather than a method! • It cannot be changed – ‘fixed size’. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling private int[] numbers = { 3, 15, 4, 5 }; int n = numbers.length; no brackets!
  • 87. 87 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 (Increment by the same number each time). Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling