0% found this document useful (0 votes)
15 views

Java Collections Framework: Collection: A Group of Elements

The Java Collections Framework provides a common interface for representing and manipulating collections of objects. It defines several collection interfaces like Collection, List, Set, Map and Queue. It also provides general purpose implementations of these interfaces like ArrayList, LinkedList, HashSet, TreeSet, HashMap and TreeMap. The framework allows iterating over collections using iterators or foreach loops. It also provides utility methods like sort for manipulating collections.

Uploaded by

Abdul Gafur
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

Java Collections Framework: Collection: A Group of Elements

The Java Collections Framework provides a common interface for representing and manipulating collections of objects. It defines several collection interfaces like Collection, List, Set, Map and Queue. It also provides general purpose implementations of these interfaces like ArrayList, LinkedList, HashSet, TreeSet, HashMap and TreeMap. The framework allows iterating over collections using iterators or foreach loops. It also provides utility methods like sort for manipulating collections.

Uploaded by

Abdul Gafur
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Java Collections Framework

Collection: a group of elements Interface Based Design:


Java Collections Framework

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>

The Collections framework in java.util

<<interface>> Set<E>

<<interface>> List<E>
Ordered Allows duplicates

<<interface>> Queue<E>
FIFO Order Allows duplicates

<<interface>> SortedMap<K,V> Ordered Rejects 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;

stringCollection.add(7); integerCollection.add(world); stringCollection = integerCollection;

Collection extends Iterable


has only one method:

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

Iterating over a Collection


Explicitly using an Iterator
for (Iterator<String> iter = stringCollection.iterator(); iter.hasNext(); ) { System.out.println(iter.next()); }

The Iterator Interface


Provide a way to access the elements of a

collection sequentially without exposing the underlying representation


Methods:

Using foreach synatx


for (String str : stringCollection) { System.out.println(str); }

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

Command and Query

General Purpose Implementations


No Direct Implementation

Collection Implementations
Class Name Convention: <Data structure> <Interface>

<<interface>> Collection

<<interface>> Map

<<interface>> Set

<<interface>> List

<<interface>> Queue

<<interface>> SortedMap

General Purpose Implementations


Set

Data Structures
Hash Table
HashSet ArrayDeque ArrayList HashMap TreeMap (SortedMap)

Resizable Array

Balanced Tree
TreeSet (SortedSet)

Linked List

<<interface>> SortedSet

Interfaces

Queue List Map

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

Output: [1, 3] or [3, 1]


Insertion order is not guaranteed

Invokes List.toString( )

14

Output: [3, 1, 1]

Insertion order is kept

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

Map Collection Views


Three views of a Map<K,V> as a collection

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)

Values (phone numbers) 03-9516743 06-8201124


17

Leo

08-5530098

Iterating Over the Keys of a Map


Map<String,String> map = new HashMap<String,String> (); map.put("Dan", "03-9516743"); map.put("Rita", "09-5076452"); map.put("Leo", "08-5530098"); map.put("Rita", "06-8201124"); for (String key : map.keySet()) { System.out.println(key); } Output: Leo Dan Rita
20

Iterating Over the Keys of a Map


Map<String,String> map = new HashMap<String,String> (); map.put("Dan", "03-9516743"); map.put("Rita", "09-5076452"); map.put("Leo", "08-5530098"); map.put("Rita", "06-8201124"); for (Iterator<String> iter= map.keySet().iterator(); iter.hasNext(); ) { System.out.println(iter.next()); } Output: Leo Dan Rita
19

Iterating Over the Key-Value Pairs of a Map


Map<String,String> map = new HashMap<String,String> (); map.put("Dan", "03-9516743"); map.put("Rita", "09-5076452"); map.put("Leo", "08-5530098"); map.put("Rita", "06-8201124"); for (Map.Entry<String,String> entry: map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } Output: Leo: 08-5530098 Dan: 03-9516743 Rita: 06-8201124
22

Iterating Over the Key-Value Pairs of a Map


Map<String,String> map = new HashMap<String,String>(); map.put("Dan", "03-9516743"); map.put("Rita", "09-5076452"); map.put("Leo", "08-5530098"); map.put("Rita", "06-8201124"); for (Iterator<Map.Entry<String,String>> iter= map.entrySet().iterator(); iter.hasNext(); ) { Map.Entry<String,String> entry = iter.next(); System.out.println(entry.getKey() + ": " + entry.getValue()); } Output: Leo: 08-5530098 Dan: 03-9516743 Rita: 06-8201124
21

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

returns a List-view of its array argument.

Arguments: A C D B Output: [A, B, C, D]

lexicographic order

max
24 23

Best Practice <with generics>


Specify an element type only when a

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!

You might also like