Java Collections

Download Report

Transcript Java Collections

Grouping objects
Arrays, Collections and Iterators
1.0
Main concepts to be covered
• Arrays
• Collections
• Iterators
2
Requirement to group objects
• Many applications for collections of objects:
– Personal organizers
– Library catalogs
– Student-record system
• The number of items to be stored varies:
– Items added
– Items deleted
3
Fixed-size collections
• Programming languages usually offer a
special fixed-size collection type: an array
• Arrays are built-in, use [] syntax
• Java arrays can store objects
or primitive-type values
• Maximum collection size must be
fixed at Array creation time
• How is Array creation time more dynamic
than in other programming languages,
such as C++?
4
Creating an array object
public class LogAnalyzer
{
private int[] hourCounts;
private LogfileReader reader;
Array variable declaration
public LogAnalyzer()
{
hourCounts = new int[24];
reader = new LogfileReader();
}
...
Array object creation
}
5
The hourCounts array
6
Using an array
• Square-bracket notation is used to access
an array element: hourCounts[hour]
• Elements are used like ordinary variables
– In an expression:
• adjusted = hourCounts[hour] – 3;
• hourCounts[hour]++;
7
Class libraries
•
•
•
•
Collections of useful classes
Encourages reuse of design and code
Java organizes its libraries in packages
The java.util package includes
classes for grouping objects in
collections
8
A personal notebook
• Notes may be stored
• No limit to the number of notes
• It tells how many notes are stored
9
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();
}
...
}
10
Object structures with
collections
11
Features of ArrayList
• It keeps the objects in order
• It increases its capacity as necessary
• It keeps a private count:
size() accessor retrieves it
12
Using ArrayList collection
public class Notebook
{
private ArrayList notes;
...
public void storeNote(String note)
{
notes.add(note);
Adding a new note
}
public int numberOfNotes()
{
return notes.size();
}
Returning the number of notes
(delegation).
...
}
13
Adding a third note
myBook.add(“11:30 meet John”)
14
Retrieving an object
public void showNote(int noteNumber)
{
if(noteNumber<0 && noteNumber >= numberOfNotes()) {
// This is not a valid note number.
}
else System.out.println(notes.get(noteNumber));
}
Retrieve and print the note
15
Removal may affect
numbering
myBook.remove(1)
16
Review: ArrayList
• 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
• For more methods, see API document
17
Collections framework
• Goals comparable to C++’s STL
• Data structures:
– Vector, LinkedList, HashSet, etc.
• Algorithms:
– Sorting, searching, shuffling, etc.
18
Loops and bugs
• Why are loops often a cause of bugs?
• What kind of bugs?
• Wouldn’t be nice to avoid these bugs?
19
Iterating over a collection
java.util.Iterator
Returns an Iterator
object
Iterator it = myCollection.iterator();
while(it.hasNext()) {
call it.next() to get the next object
do something with that object
}
public void listNotes()
{
Iterator it = notes.iterator(); How does Iterator
help avoid bugs?
while(it.hasNext()) {
System.out.println(it.next());
}
}
20
Review: loops and Iterator
• Java while and for loops
are similar to C++
– Similar bugs, too!
• Collection classes have special
Iterator objects that simplify
iteration over the whole collection
– Bounds-checking methods help avoid bugs
21