TreeMaps

advertisement
Tree Maps and Tree Sets
The JCF Binary Tree classes
CS-2851
Dr. Mark L. Hornick
1
Map definition review

A map is a collection in which each
Entry element has two parts:



a unique key part
a value part (which may not be unique)
Entry
key
value
Each unique key “maps” to a
corresponding value

Example: a map of students, in which each
key is the (unique) student ID, and each
(non-unique?) value is a reference to a
student object.
CS-2851
Dr. Mark L. Hornick
2
TreeMap :
The JCF implementation of a Binary Tree


TreeMap stores a Map in a red-black tree, ordered
by (unique) keys
public class TreeMap<K, V>
implements SortedMap<K, V>
extends AbstractMap<K, V>
Example:
TreeMap<Integer, Student> students;
//Integer: unique student ID number
//Student: student object
CS-2851
Dr. Mark L. Hornick
3
JCF TreeMap methods

Implements the Map interface


e.g. no iterator() method
But Map does define




Put(k,v) – insert a key/value entry into the Binary Tree
Remove(k) – remove the entry with the specified key
containsKey(k) – search for the entry with key k
containsValue(v) – search for an entry with value v


Could be more than one entry; each with a unique key
size(), equals(), clear()
CS-2851
Dr. Mark L. Hornick
4
The put() method is used to
insert elements
public V put (K key, V value)
/**
* Ensures that there is an element in this TreeMap object
* with the specified key&value pair. If this TreeMap
* object had an element with the specified key before
* this method was called, the previous value associated
* with that key has been returned. Otherwise, null
* has been returned.
* The worstTime (n) is O (log n).
*
* @param key – the specified key
* @param value – the specified value
* @return the previous value associated with key, if
*
there was such a mapping; otherwise, null.
*
*/
CS-2851
Dr. Mark L. Hornick
5
The containsKey() method determines
if the TreeMap contains an entry with a
specified unique key
public boolean containsKey (Object key)
/**
* Determines if this TreeMap object contains a mapping
* with a specified key.
* The worstTime (n) is O (log n). WHY???
*
* @param key – the specified key
*
* @return true – if this TreeMap object contains a
*
mapping with the specified key; otherwise, false.
*/
CS-2851
Dr. Mark L. Hornick
6
The containsValue() method
determines if the TreeMap contains an
entry with a specified value
public boolean containsValue (Object value)
/**
* Determines if this TreeMap object contains a mapping
* with a specified value.
* The worstTime (n) is O (n). WHY???
*
* @param value – the specified value
*
* @return true – if this TreeMap object contains
* at least one mapping with the specified value;
* otherwise, false.
*/
CS-2851
Dr. Mark L. Hornick
7
Some other Map interface
methods implemented in TreeMap

public V remove (Object key)



public V get (Object key)


Removes an entry with the specified key
Returns the associated value
Gets the associated value of an entry with the
specified key
public Set entrySet()

Returns a Set object reference

Which can be iterated
CS-2851
Dr. Mark L. Hornick
8
The two TreeMap constructors
(required by SortedMap)
public TreeMap( )
{
// comparator = null; key class implements
// Comparable interface
} // default constructor
public TreeMap (Comparator<? super K> c)
{
comparator = c; // c implements Comparator
interface
} // one-parameter constructor
CS-2851
Dr. Mark L. Hornick
9
The Comparator interface allows a
user of a class to override how that
class performs comparisons of keys
Interface Comparator<T> {
// Compares its two arguments for order.
int compare(T o1, T o2);
// Indicates whether some other object is "equal
to" this Comparator
boolean equals(Object obj);
}

For example, the String objects can be ordered by the
length of the string instead of lexicographically
CS-2851
Dr. Mark L. Hornick
10
Tree Sets
CS-2851
Dr. Mark L. Hornick
11
A TreeSet is an ordered Collection
in which duplicate elements are
not allowed

The TreeSet class has all of the methods in the
Collection interface


add, remove, size, contains, …
plus toString (inherited from AbstractCollection)
public class TreeSet<E>
extends AbstractSet<E>
implements SortedSet<E>, Cloneable,
java.io.Serializable
{
CS-2851
Dr. Mark L. Hornick
12
The TreeSet constructors
public TreeSet( )
// assumes elements ordered by
// Comparable interface
public TreeSet (Comparator<? super E> c)
// assumes elements ordered
// by Comparator c
public TreeSet (Collection<? extends E> c)
// copy constructor; assumes elements ordered
// by Comparable interface
CS-2851
Dr. Mark L. Hornick
13
The TreeSet class is implemented
with TreeMap in which all of the
values are the same



The TreeSet elements are the keys in the underlying map
A dummy object is associated with the value in the underlying
map
All the work is done by the underlying map
/**
* Initializes this TreeSet object to be empty.
public TreeSet( )
{
this (new TreeMap<E, Object>( ));
} // default constructor
CS-2851
Dr. Mark L. Hornick
14
Download