140 likes | 298 Views
Tree Maps and Tree Sets. The JCF Binary Tree classes. 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) Each unique key “maps” to a corresponding value
E N D
Tree Maps and Tree Sets The JCF Binary Tree classes CS-2851Dr. Mark L. Hornick
Map definition review • A map is a collection in which each Entry element has two parts: • a uniquekey part • a value part (which may not be unique) • 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. Entry key value CS-2851Dr. Mark L. Hornick
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-2851Dr. Mark L. Hornick
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-2851Dr. Mark L. Hornick
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. * TheworstTime (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-2851Dr. Mark L. Hornick
The containsKey() method determines if the TreeMap contains an entry with a specified unique key publicboolean containsKey (Object key) /** * Determines if this TreeMap object contains a mapping * with a specified key. * The worstTime (n) isO (log n). WHY??? * * @param key – the specified key * * @return true – if this TreeMap object contains a * mapping with the specified key; otherwise, false. */ CS-2851Dr. Mark L. Hornick
The containsValue() method determines if the TreeMap contains an entry with a specified value publicboolean containsValue (Object value) /** * Determines if this TreeMap object contains a mapping * with a specified value. * The worstTime (n) isO (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-2851Dr. Mark L. Hornick
Some other Map interface methods implemented in TreeMap • public V remove (Object key) • Removes an entry with the specified key • Returns the associated value • public V get (Object key) • Gets the associated value of an entry with the specified key • public Set entrySet() • Returns a Set object reference • Which can be iterated CS-2851Dr. Mark L. Hornick
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-2851Dr. Mark L. Hornick
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-2851Dr. Mark L. Hornick
Tree Sets CS-2851Dr. Mark L. Hornick
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) publicclass TreeSet<E> extends AbstractSet<E> implements SortedSet<E>, Cloneable, java.io.Serializable { CS-2851Dr. Mark L. Hornick
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-2851Dr. Mark L. Hornick
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-2851Dr. Mark L. Hornick