1 / 13

CSC 212 – Data Structures

CSC 212 – Data Structures. Lecture 31: Last Word On Dictionaries. Problem of the Day. What is the smallest positive integer that cannot be defined in less than twenty-five syllables?. What is the smallest positive integer that cannot be defined in less than twenty-five syllables ?

Download Presentation

CSC 212 – Data Structures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSC 212 –Data Structures Lecture 31: Last Word On Dictionaries

  2. Problem of the Day • What is the smallest positive integer that cannot be defined in less than twenty-five syllables? • What is the smallest positive integer that cannot be defined in less than twenty-five syllables? • The highlighted phrase has fewer than 25 syllables, so this cannot exist!

  3. Comparing Data Items • Ordering entries means comparing keys • Comparison depends on key’s type • Use <, >, == for numeric data • Use compareTo() for Strings • What about Car, IMClient, or Prof instances? • Want abstract approach to this problem • No OrderedDictionary class for each key type

  4. Comparator ADT • Implements a total order relation • Objects less than, equal to, or greater than • Follows rule that if a > b & b > c, then a > c • Comparator’s methods are abstract • Implementation is specific to key type • But still independent of the key class • Can reweight keys by changing how comparator orders them

  5. Comparator Interface public interface Comparator<E> { public int compare(E x, E y);}public class StrComp implements Comparator<String> { public int compare(String x, String y){ return(x.compareTo(y)); } } • Returns integer < 0 when x < y 0 when x== y> 0 when x > y

  6. Ordered Dictionaries • Ordered dictionary constructor includes Comparator parameter • Now works with any type of key! • Can rewrite binary search more abstractly as: if (c.compare(key, table[m].getKey()) > 0) { l = m + 1;} else if (c.compare(key, table[m].getKey()) < 0) { h = m - 1;} else { return m;}

  7. Ordered Dictionary • Key feature of ordered dictionary: they maintain entries in order • Can be a performance win (faster searching) • But can also be an important feature • Think of how first use a dictionary: Q: “Mom, how do I spell _______?”A: “Look it up.” • Cannot do this with Dictionary ADT

  8. Ordered Dictionary Interface public interface OrderedDictionary<K,V> extends Dictionary<K,V> { public Entry<K,V> first(); // Entry with smallest key public Entry<K,V> last(); // Entry with largest key public Iterator<Entry<K,V>> successors(K k); public Iterator<Entry<K,V>> predecessors(K k); } • Includes all methods in Dictionary • Includes first() & last() methods • successors() iterates over larger keys • predecessors() iterates through smaller keys • May not include entries with the key k

  9. Writing an Ordered Dictionary public class ODict<K,V> implements... {private IndexList<Entry<K,V>> table;private Comparator<K> comp;public Entry<K,V> first() throws EmptyDictionaryException { try { return table.get(0); } catch (NoSuchElementException e) { throw EmptyDictionaryException(“Dummkopf.”); } }

  10. Writing an Ordered Dictionary public Iterator<Entry<K,V>> successors(K k) {IteratorClass<Entry<K,V>> retVal = new ...; int rank = binSearch(k);while (rank < table.size()) { if (comp.compare(k, table.get(rank).getKey)==0) { rank++; } else { break; }}for (; rank < table.size(); rank++) { retVal.addLast(table.get(rank));}return retVal; }

  11. Why Should We Care? • We often care about ordering data • Prices • Schedules • QPAs • Number of watts consumed • Processor speed

  12. Your Turn • Get back into groups and do activity

  13. Before Next Lecture… • Keep up with your reading! • Cannot stress this enough • Finish Week #12 Assignment • Start Programming Assignment #4 • Prepare for Midterm #2 next Monday • Will also be open book, open note • Covers from last midterm through this week

More Related