Download presentation
Presentation is loading. Please wait.
1
Practical Session 4 Java Collections
2
Outline Working with a Collection The Collection interface
The Collection hierarchy Maps Case Study: Undoable Stack The Collections class Wrapper classes
3
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, ArrayList, Stack, ArrayDequeue, PriorityQueue, TreeSet, HashMap…
4
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 …
5
Working with a collection
Definition syntax: Collection <type> colName = new Collection <type>() Example: 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);
6
Working with a collection
Example - continued: 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));
7
The Collection Interface
Collection 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); …
8
The Collection Hierarchy
(Partial illustration) Collection List Set Queue
9
The Collection Hierarchy
(Partial illustration) Collection List Set Queue Vector
10
The Collection Hierarchy
(Partial illustration) Collection List Set Queue Vector ArrayList PriorityQueue Stack
11
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.
12
Program Stack
13
Program Stack Resize 36
14
Program Stack Resize 36 Recolor 4 Resize 36
15
Program Stack Resize 24 Recolor 4 Resize 36 Undo: Resize(36)
16
Program Stack Undo: Resize(36) Resize 24 Recolor 4 Resize 36 Recolor 4
17
Undoable Stack Hierarchy
18
Undoable Stack Hierarchy
TextArea -text: String -size: int -color: int + getters… + setters…
19
Undoable Stack Hierarchy
TextArea -text: String -size: int -color: int + getters… + setters… Operation + perform(arg: int) + getArg() : int
20
Undoable Stack Hierarchy
TextArea -text: String -size: int -color: int + getters… + setters… Operation + perform(arg: int) + getArg() : int Recolor - color: int + perform(arg: int) + getArg() : int Resize - size: int + perform(arg: int) + getArg() : int
21
Undoable Stack Hierarchy
TextArea -text: String -size: int -color: int + getters… + setters… Operation + perform(arg: int) + getArg() : int 0..n Recolor - color: int + perform(arg: int) + getArg() : int Resize - size: int + perform(arg: int) + getArg() : int UndoStack + add (op :Operation) + undo()
22
Maps An object that maps keys to values.
A map cannot contain duplicate keys. each key can map to at most one value.
23
Maps 1 2 3 4 5 6 9 מערכים: 1 7 10 13 15 30 55 6 8 4 46 11 מפות:
24
Words count Generates a frequency table of the words found in a sentence. Example: how much wood could a woodchuck chuck if a woodchuck could chuck wood. wood=2, could=2, how=1, if=1, chuck=2, a=2, woodchuck=2, much=1
25
Words count String sentence = "how much wood could a woodchuck chuck if a woodchuck could chuck wood"; Map<String, Integer> map = new HashMap<String, Integer>(); for (String word : sentence.split(" ")) { Integer freq = map.get(word); map.put(word, (freq == null) ? 1 : freq + 1); }
26
Map types HashMap<K,V>.
This implementation provides constant-time performance for the basic operations (get and put). Uses the hashCode() method. String sentence = "how much wood could a woodchuck chuck if a woodchuck could chuck wood"; Map<String, Integer> map = new HashMap<String, Integer>(); {wood=2, could=2, how=1, if=1, chuck=2, a=2, woodchuck=2, much=1}
27
Map types TreeMap<K,V>.
The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time. This implementation provides guaranteed log(n) time cost for the containsKey, get, put and remove operations. String sentence = "how much wood could a woodchuck chuck if a woodchuck could chuck wood"; Map<String, Integer> map = new TreeMap<String, Integer>(); {a=2, chuck=2, could=2, how=1, if=1, much=1, wood=2, woodchuck=2}
28
Map types LinkedHashMap<K,V>.
A HashMap that maintains a doubly-linked list. This linked list defines the iteration ordering, which is normally the order in which keys were inserted into the map (insertion-order). String sentence = "how much wood could a woodchuck chuck if a woodchuck could chuck wood"; Map<String, Integer> map = new LinkedHashMap<String, Integer>(); {how=1, much=1, wood=2, could=2, a=2, woodchuck=2, chuck=2, if=1}
29
The Collections class The 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);
30
A wrapper class is an object representing a primitive type.
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.
31
Wrapper Classes Integer Float Double Character Boolean int float
Example: Integer intObj = new Integer(10); int number = intObj.intValue();
32
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);
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.