Upload
sarah-fitzgerald
View
45
Download
3
Tags:
Embed Size (px)
DESCRIPTION
Practical Session 4 Java Collections. Outline. Working with a Collection The Collection interface The Collection hierarchy Case Study: Undoable Stack The Collections class Wrapper classes. Collection. A group of elements. The group size can be changed during run-time. - PowerPoint PPT Presentation
Citation preview
Practical Session 4Java Collections
OutlineWorking with a Collection
The Collection interface
The Collection hierarchy
Case Study: Undoable Stack
The Collections class
Wrapper classes
Collection
A group of elements. The group size can be changed during run-time.
A collection object has many useful methods for manipulating the collection:
• Inserting elements
• Deleting elements
• Copying the collection
• Iterating over the elements
• Computing subsets of elements
…
Various types of collections are defined in the standard library:
Vector, LinkedList, Stack, ArrayDequeue, PriorityQueue, TreeSet,…
Collection
Why shouldn’t we just use arrays?
• Arrays are not objects!
• You cannot invoke methods on arrays.
• Arrays have fixed size.
• Arrays are less convenient for representing certain types of collections:
• Sets
• Double-ended queues
• Dictionaries
• …
Working with a collection
import java.util.Vector;
…
Vector <Car> carsVec = new Vector <Car>();
Car Volvo = new Car(2.0);
Car BMW = new Car(2.2);
carsVec.add(Volvo);
carsVec.add(BMW);
for (Car c: carsVec)
System.out.println(c);
Definition syntax: Collection <type> colName = new Collection <type>()
Example:
Working with a collection
Car temp = carsVec.elementAt(0);
carsVec.set(0,carsVec.elementAt(1));
carsVec.set(1, temp);
for (int i=0; i < carsVec.size(); i++)
System.out.println(carsVec.elementAt(i));
Example - continued:
The Collection InterfaceCollection is an interface in the standard java library.
The Collection interface is generic. It accepts a type as a parameter.
public interface Collection<E> extends Iterable<E> {
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element); //optional
boolean remove(Object element); //optional
Iterator<E> iterator();
Object[] toArray();
<T> T[] toArray(T[] a);
…
The Collection Hierarchy
Collection
List Set Queue
(Partial illustration)
The Collection Hierarchy
Collection
List Set Queue
Vector
(Partial illustration)
The Collection Hierarchy
Collection
List Set Queue
Vector
Stack
LinkedList PriorityQueue
(Partial illustration)
Case Study: Undoable Stack
Various programs allow the user to undo his operations.
The undo operations are performed in reverse order.
In such a program, we need to add each operation with its parameters
onto the stack.
Program Stack
Program Stack
Resize 36
Program Stack
Resize 36
Resize 36
Recolor 4
Program Stack
Resize 36
Recolor 4
Resize 24
Undo:
Resize(36)
Program Stack
Resize 36
Recolor 4
Resize 24
Resize 36
Recolor 4
Undo:
Resize(36)
Undoable Stack Hierarchy
Undoable Stack Hierarchy
TextArea
-text: String
-size: int
-color: int
+ getters…
+ setters…
Undoable Stack Hierarchy
Operation
+ perform(arg: int)
+ getArg() : int
TextArea
-text: String
-size: int
-color: int
+ getters…
+ setters…
Undoable Stack Hierarchy
Operation
+ perform(arg: int)
+ getArg() : int
Recolor
- color: int
+ perform(arg: int)
+ getArg() : int
Resize
- size: int
+ perform(arg: int)
+ getArg() : int
TextArea
-text: String
-size: int
-color: int
+ getters…
+ setters…
Undoable Stack Hierarchy
Operation
+ perform(arg: int)
+ getArg() : int
Recolor
- color: int
+ perform(arg: int)
+ getArg() : int
Resize
- size: int
+ perform(arg: int)
+ getArg() : int
TextArea
-text: String
-size: int
-color: int
+ getters…
+ setters…
UndoStack
+ add (op :Operation)
+ undo()
0..n
The Collections classThe Collections class contains static methods that operate on collections:
• min
• max
• reverse
• sort
• …
Example:
import java.util.Collections; import java.util.Vector;
…
Vector <Car> carsVec = new Vector <Car>();
…
Collections.reverse(carsVec);
Wrapper Classes
What happens if we want to create a collection of a primitive type?
Collections can be made only of objects.
Primitive types are not objects.
We use wrapper classes instead.
A wrapper class is an object representing a primitive type.
Wrapper Classes
int
float
double
char
boolean
Integer
Float
Double
Character
Boolean
Example:Integer intObj = new Integer(10);int number = intObj.intValue();
A collection of wrapper objects
Import java.util.Vector;
…
Vector <Integer> numVec = new Vector <Integer>();
int size = 10;
for (int i = size; i >0; i--)
numVec.add(new Integer( i ));
Collections.sort(numVec);
for (Integer i: numVec)
System.out.println( i);