Java Collections Framework: Collection: A Group of Elements
Java Collections Framework: Collection: A Group of Elements
Interfaces
Implementations
Algorithms
2
Collection Interfaces
Unordered Rejects duplicates
Online Resources
Java 6 API Specification:
http://java.sun.com/javase/6/docs/api/
<<interface>> Collection<E>
Unordered Rejects duplicates extends
<<interface>> Map<K,V>
<<interface>> Set<E>
<<interface>> List<E>
Ordered Allows duplicates
<<interface>> Queue<E>
FIFO Order Allows duplicates
Sun Tutorial:
http://java.sun.com/docs/books/tutorial/collections/
<<interface>> SortedSet<E>
Ordered Rejects duplicates
4 3
A Simple Example
Collection<String> stringCollection = Collection<Integer> integerCollection =
Collection stringCollection.add("Hello"); , Collection integerCollection.add(5); Float ,Double ,Integer integerCollection.add(new Integer(6));
A Simple Example
Collection<String> stringCollection = Collection<Integer> integerCollection = stringCollection.add("Hello"); integerCollection.add(5); integerCollection.add(new Integer(6)); stringCollection.add(7); integerCollection.add(world); stringCollection = integerCollection;
A Simple Example
Collection<String> stringCollection = Collection<Integer> integerCollection = stringCollection.add("Hello"); integerCollection.add(5); integerCollection.add(new Integer(6));
<<interface>> Iterable<E>
Iterator<E> iterator();
<<interface>> Collection<E>
<<interface>> Set<E>
<<interface>> List<E>
<<interface>> Queue<E>
stringCollection.add(7); integerCollection.add(world);
<<interface>> SortedSet<E>
stringCollection = integerCollection;
8
hasNext() - Returns true if there are more elements next() - Returns the next element remove() - Removes the last element returned by the iterator (optional operation)
9
10
Collection Implementations
Class Name Convention: <Data structure> <Interface>
<<interface>> Collection
<<interface>> Map
<<interface>> Set
<<interface>> List
<<interface>> Queue
<<interface>> SortedMap
Data Structures
Hash Table
HashSet ArrayDeque ArrayList HashMap TreeMap (SortedMap)
Resizable Array
Balanced Tree
TreeSet (SortedSet)
Linked List
<<interface>> SortedSet
Interfaces
LinkedList LinkedList
HashSet
TreeSet
ArrayList
LinkedList
HashMap
TreeMap 12
11
Set Example
Set<Integer> set = new HashSet<Integer>(); set.add(3); A set does not allow duplicates. set.add(1); It does not contain: set.add(new Integer(1)); two references to the same object set.add(new Integer(6)); two references to null set.remove(6); references to two objects a and b such that a.equals(b) System.out.println(set);
remove() can get only reference as argument
Interface
List Example
List<Integer> list = new ArrayList<Integer>(); list.add(3); Implementation list.add(1); list.add(new Integer(1)); list.add(new Integer(6)); List holds Integer list.remove(list.size()-1); references System.out.println(list);
(auto-boxing) List allows duplicates remove() can get index or reference as argument
13
Invokes List.toString( )
14
Output: [3, 1, 1]
Map Example
Map<String,String> map = new HashMap<String,String>(); map.put("Dan", "03-9516743"); map.put("Rita", "09-5076452"); No duplicates map.put("Leo", "08-5530098"); map.put("Rita", "06-8201124"); Unordered System.out.println(map); Output: {Leo=08-5530098, Dan=03-9516743, Rita=06-8201124}
Keys (names) Dan Rita Leo Values (phone numbers) 03-9516743 09-5076452 06-8201124
16
Queue Example
Queue<Integer> queue = new LinkedList<Integer>(); queue.add(3); queue.add(1); Elements are added queue.add(new Integer(1)); at the end of the queue queue.add(new Integer(6)); queue.remove(); System.out.println(queue);
remove() may have no argument head is removed
Output: [1, 1, 6]
FIFO order
15
08-5530098
SortedMap Example
SortedMap <String,String>map = new TreeMap<String,String> (); map.put("Dan", "03-9516743"); map.put("Rita", "09-5076452"); map.put("Leo", "08-5530098"); map.put("Rita", "06-8201124"); lexicographic order System.out.println(map); Output:
{Dan=03-9516743, Leo=08-5530098, Rita=06-8201124}
Keys (names) Dan Rita
18
keySet
Set<K>
values
Collection<V>
entrySet
Set<Map.Entry<K,V>>
The Set of key-value pairs (implement Map.Entry)
Leo
08-5530098
Sorting
import java.util.*; public class Sort { public static void main(String args[]) { List<String> list = Arrays.asList(args); Collections.sort(list); System.out.println(list); } } import the package of List, Collections and Arrays
Collection Algorithms
Defined in the Collections class Main algorithms:
sort binarySearch reverse shuffle min
lexicographic order
max
24 23
Sorting (cont.)
Sort a List l by Collections.sort(l); If the list consists of String objects it will be sorted in lexicographic
collection is instantiated:
Set<String> s = new HashSet<String>();
Interface Implementation
Works, but
order. Why?
String implements Comparable<String>: public interface Comparable<T> { public int compareTo(T o); } Error when sorting a list whose elements - do not implement Comparable or - are not mutually comparable. User defined comparator Collections.sort(List, Comparator);
26 25
public void foo(HashSet<String> s){} public void foo(Set<String> s) {} s.add() invokes HashSet.add()
polymorphism Better!