Professional Documents
Culture Documents
www.marcus-biel.com
Collection(s)
2. Java Collections Framework
3. a data structure
4. java.util.Collection interface
5. java.util.Collections
Unfortunately,
there are several overloaded uses of the word collection.
Let me clarify the various meanings up-front.
2016, Marcus Biel, http://www.marcus-biel.com/
Collection(s)
1. a compilation or group of things
3. a data structure
4. java.util.Collection interface
5. java.util.Collections
The different use cases are:
A collection without any IT relevance,
as a compilation or group of things
2016, Marcus Biel, http://www.marcus-biel.com/
Collection(s)
1. a compilation or group of things
3. a data structure
4. java.util.Collection interface
5. java.util.Collections
Second: The Java Collections Framework
a library of different interfaces and classes
3. a data structure
4. java.util.Collection interface
5. java.util.Collections
Third: A collection as a data structure
Think of a box or container,
that can hold a group of objects like an array for example.
2016, Marcus Biel, http://www.marcus-biel.com/
Collection(s)
1. a compilation or group of things
3. a data structure
4. java.util.Collection interface
5. java.util.Collections
Fourth: The java.util.Collection interface
one of the two main interfaces of the Java Collections Framework
3. a data structure
4. java.util.Collection interface
5. java.util.Collections
And fifth: java.util.Collections
a utility class that will help you to modify or
operate on Java collections
2016, Marcus Biel, http://www.marcus-biel.com/
What is the Java Collections Framework?
<<interface>> <<interface>>
Collection Map
<<interface>> <<interface>>
Collection Map
<<interface>> <<interface>>
Collection Map
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
Besides,
a List keeps its elements in the order they were inserted into the list.
2016, Marcus Biel, http://www.marcus-biel.com/
Collection Interface <<interface>>
Collection
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
As it is based on arrays,
it is very fast to iterate and read from an ArrayList,
2016, Marcus Biel, http://www.marcus-biel.com/
Collection Interface <<interface>>
Collection
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList Vector LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
HashSet ArrayList LinkedList PriorityQueue
SortedSet
<<interface>>
LinkedHashSet
NavigableSet implements
extends
TreeSet
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
With the help of the key you can retrieve the object it relates to.
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashtable Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
Now lets look at the interfaces that extend the map interface.
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
<<interface>>
Hashmap
NavigableMap
LinkedHashMap TreeMap
In the first line, you see I have defined a List variable myList,
and with the String parameter in angle brackets
I tell the compiler that my myList reference variable
is supposed to be used only with Strings.
2016, Marcus Biel, http://www.marcus-biel.com/
Generics
List<String> myList = new ArrayList<String>(100);
When you use List instead of ArrayList for the reference variable,
you could later replace the ArrayList by a LinkedList,
and all you had to adjust was this one line of code.
2016, Marcus Biel, http://www.marcus-biel.com/
Generics
Collection<String> myList = new ArrayList<String>(100);
E read()
E read()
However, when these types are locked in, this will automatically
also specify the types interface methods will use.
E read()
So if you see some weird one letter types in one of the next slides,
just remember it means this is a
method that can be used in a generic way.
2016, Marcus Biel, http://www.marcus-biel.com/
Utility Interfaces
java.util.Iterator
java.lang.Iterable
java.lang.Comparable
java.util.Comparator
java.lang.Iterable
java.lang.Comparable
java.util.Comparator
java.lang.Iterable
java.lang.Comparable
java.util.Comparator
java.lang.Iterable
java.lang.Comparable
java.util.Comparator
E next();
void remove();
E next();
void remove();
boolean hasNext(); -
Returns true if the collection has more elements.
E next();
void remove();
E next(); -
Returns the next element in the iteration.
E next();
void remove();
void remove(); -
Removes the last element returned by
this iterator from the underlying collection.
2016, Marcus Biel, http://www.marcus-biel.com/
java.lang.Iterable
Iterator<T> iterator()
int compareTo(T o)
int compareTo(T o)
int compareTo(T o)
int compareTo(T o)
Last but not least, lets look at the two utility classes Collections and Arrays.
Like a Swiss army knife they provide static helper methods that
greatly enhance the general usefulness of the collection classes.
java.util.Collections
java.util.Collections
Offers methods like sort, shuffle, reverse, search, min or max.
java.util.Collections
java.util.Arrays
java.util.Arrays -
Operates on Arrays and not on collections actually.
Similar to the Collections class, it allows to sort arrays or
to search through arrays, for example.
2016, Marcus Biel, http://www.marcus-biel.com/
Copyright 2016
Marcus Biel
All rights reserved