Collections: A First Glimpse
Download
Report
Transcript Collections: A First Glimpse
Collections
A First Glimpse
26-Jul-16
Collections
A collection is a structured group of objects
An array is a kind of collection
A Vector is a kind of collection
A linked list is a kind of collection
Java 1.2 introduced the Collections Framework
and provided many great implementations
Vectors have been redefined to implement Collection
Trees, linked lists, stacks, hash tables, and other classes
are implementations of Collection
Arrays do not implement the Collection interfaces
2
Types of Collection
Java supplies several types of Collection:
Set: cannot contain duplicate elements, order is not important
SortedSet: like a Set, but order is important
List: may contain duplicate elements, order is important
Java also supplies some “collection-like” things:
Map: a “dictionary” that associates keys with values, order is
not important
SortedMap: like a Map, but order is important
3
The Collections hierarchy
4
Collections are ADTs
I’m not going to cover Collections just yet, but I want to
use them as an example
Collections are one of the best-designed parts of Java,
because
They are elegant: they combine maximum power with
maximum simplicity
They are uniform: when you know how to use one, you
almost know how to use them all
You can easily convert from one to another
5
Uniformity through interfaces
Much of the elegance of the Collections Framework
arises from the intelligent use of interfaces
For example, the Collection interface specifies
(among many other operations):
boolean add(Object o)
boolean isEmpty()
boolean remove()
int size()
Object[] toArray()
Iterator iterator()
6
Vectors
The class Vector has been retrofitted to implement the
Collection interface
Vector supplies add(Object) and iterator()
methods (among others)
Let’s look at creating a Vector and iterating through
the elements
7
The Iterator interface
interface iterator { // java.lang.util
boolean hasNext();
// Returns true if the iteration has more
// elements.
Object next();
// Returns the next element in the
// interation.
void remove();
// Removes from the underlying collection
// the last element returned by the
// iterator (optional operation).
8
Using a Vector
Collection numerals = new Vector();
numerals .add("one");
numerals .add("two");
numerals .add("three");
Iterator iter = numerals.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
Results:
one
two
three
9
Using a TreeSet
Collection numerals = new TreeSet();
numerals .add("one");
numerals .add("two");
numerals .add("three");
Iterator iter = numerals.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
Results:
one
three
two
10
Conversions
Vector v = new Vector(numerals);
TreeSet ts = new TreeSet(v);
11
Back to arrays
Arrays are not part of the new Collections Framework,
but they haven’t been ignored
Java 1.2 introduced the new Arrays class, with some
useful operations, for example:
static void sort(Object[] a)
static int binarySearch(Object[] a, Object key)
static boolean equals(Object[] a, Object[] a2)
static void fill(Object[] a, Object val)
static void fill(Object[] a, Object val,
int from, int to)
static List asList(Object[] a)
12
What to remember
We haven’t really begun to study the Collections
framework yet, but—
You should learn to use the Iterator interface
You should examine and learn more about the Arrays
package
13
The End
14