Professional Documents
Culture Documents
1
Generics – Reading for next week
Tuesday, January 4, 8:46:44 AM
• http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
Vladimir Misic vm(at)cs.rit.edu
2
What are collections?
Tuesday, January 4, 8:46:44 AM
– A list of students
– A list relating people to email addresses
3
What is Java Collection Framework?
Tuesday, January 4, 8:46:44 AM
4
Reasons for Collections Framework use
Tuesday, January 4, 8:46:44 AM
implement APIs
• Fosters software reuse
5
Key idea
Tuesday, January 4, 8:46:44 AM
6
Interface-based design
Tuesday, January 4, 8:46:44 AM
– List is interface
– LinkedList is implemented class
– Calling l.add() invokes method of class LinkedList
7
Interface-Based Design
Tuesday, January 4, 8:46:44 AM
Vladimir Misic vm(at)cs.rit.edu
8
Overview: Core Interfaces
Tuesday, January 4, 8:46:44 AM
Collection Map
Vladimir Misic vm(at)cs.rit.edu
SortedMap
Set List
SortedSet
9
Concrete Collections
Tuesday, January 4, 8:46:44 AM
10
Overview: Utilities
Tuesday, January 4, 8:46:44 AM
• Utility Interfaces
– Comparator
– Iterator
Vladimir Misic vm(at)cs.rit.edu
• Utility Classes
– Collections
– Arrays
11
Interface Collection
Tuesday, January 4, 8:46:44 AM
• A group of objects
• Major methods:
Vladimir Misic vm(at)cs.rit.edu
– int size();
– boolean isEmpty();
– boolean contains(Object);
– Iterator iterator();
– Object[] toArray();
– boolean add(Object);
– boolean remove(Object);
– void clear();
– ...
12
Interface Collection
Tuesday, January 4, 8:46:44 AM
•clear()
•contains(o) Membership checking.
•containsAll(c) Inclusion checking
•isEmpty() Whether it is empty
•iterator() Return an iterator
•remove(o) Remove an element
•removeAll(c) Remove a collection
•retainAll(c) Keep the elements
•size() The number of elements
13
To iterate through collection… use iterator
Tuesday, January 4, 8:46:44 AM
void remove();
}
14
Set
Tuesday, January 4, 8:46:44 AM
15
An Example
Tuesday, January 4, 8:46:44 AM
/*
* Print out the unique strings in the phrase:
* "It was the best of times, it was the worst of times."
* @author Sean Strout
*/
// The phrase
String phrase = "It was the best of times, it was the worst of times.";
} // main
} // TestHashSet
16
An Example
Tuesday, January 4, 8:46:44 AM
import java.util.*;
17
List
Tuesday, January 4, 8:46:44 AM
18
List Details
Tuesday, January 4, 8:46:44 AM
int lastIndexOf(Object);
– void add(int, Object);
– Object remove(int);
– List subList(int, int);
• add() inserts
• remove() deletes
• Implemented by:
– ArrayList, LinkedList, Vector
19
An Example
Tuesday, January 4, 8:46:44 AM
// silly example:
import java.util.*;
System.out.println(l);
}
}
20
An Example
Tuesday, January 4, 8:46:44 AM
import java.util.*;
System.out.println(l);
}
}
21
Map
Tuesday, January 4, 8:46:44 AM
22
Map Details
Tuesday, January 4, 8:46:44 AM
• Major methods:
– int size();
– boolean isEmpty();
– boolean containsKey(Object);
–
Vladimir Misic vm(at)cs.rit.edu
boolean containsValue(Object);
– Object get(Object);
– Object put(Object, Object);
– Object remove(Object);
– void putAll(Map);
– void clear();
• Implemented by:
– HashMap, Hashtable, WeakHashMap, Attributes
23
Accessing all members of Map
Tuesday, January 4, 8:46:44 AM
• Methods
– Set keySet();
– Collection values();
– Set entrySet();
• Map.Entry
Vladimir Misic vm(at)cs.rit.edu
24
An Example
Tuesday, January 4, 8:46:44 AM
import java.util.*;
if (frequency == null) {
frequency = ONE;
} else {
int value = frequency.intValue();
frequency = new Integer(value + 1);
}
25
An Example
Tuesday, January 4, 8:46:44 AM
import java.util.*;
% java MapExampleVM 3
public class MapExampleVM {
Name: ben
public static void main(String args[]) {
Grade: b
Map map = new HashMap();
Name: chad
String name, grade;
Grade: c
Vladimir Misic vm(at)cs.rit.edu
hasNext() next()
true
hasNext()
false
iterator
28
Iterator
Tuesday, January 4, 8:46:44 AM
• Represents a loop
• Created by Collection.iterator()
• Similar to Enumeration
Vladimir Misic vm(at)cs.rit.edu
29
Iterator Methods
Tuesday, January 4, 8:46:44 AM
• boolean hasNext()
– Returns true if the iteration has more elements
• Object next()
Vladimir Misic vm(at)cs.rit.edu
30
ListIterator
Tuesday, January 4, 8:46:44 AM
31
Set Implementations
Tuesday, January 4, 8:46:44 AM
• HashSet
– a Set backed by a hash table
• TreeSet
Vladimir Misic vm(at)cs.rit.edu
32
List Implementations
Tuesday, January 4, 8:46:44 AM
• ArrayList
– a resizable-array implementation like Vector
• unsynchronized, and without legacy methods
• LinkedList
Vladimir Misic vm(at)cs.rit.edu
33
Map Implementations
Tuesday, January 4, 8:46:44 AM
• HashMap
– A hash table implementation of Map
– Like Hashtable, but supports null keys & values
Vladimir Misic vm(at)cs.rit.edu
• TreeMap
– A balanced binary tree implementation
– Imposes an ordering on its elements
• Hashtable
– Synchronized hash table implementation of Map
interface, with additional "legacy" methods.
34
WeakHashMap
Tuesday, January 4, 8:46:44 AM
• WeakHashMap
– Special-purpose implementation of Map interface
storing only weak references to its keys
Vladimir Misic vm(at)cs.rit.edu
35
Sorting
Tuesday, January 4, 8:46:44 AM
36
Sorting (cont.)
Tuesday, January 4, 8:46:44 AM
• Comparable interface
– Must be implemented by all elements in SortedSet
Vladimir Misic vm(at)cs.rit.edu
37