1 / 17

CSci 143 Sets & Maps

CSci 143 Sets & Maps. Adapted from Marty Stepp, University of Washington http://www.cs.washington.edu/143/. Exercise. Write a program that counts the number of unique words in a large text file (say, Moby Dick or the King James Bible). Store the words in a collection

doris
Download Presentation

CSci 143 Sets & Maps

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. CSci 143Sets & Maps Adapted from Marty Stepp, University of Washington http://www.cs.washington.edu/143/

  2. Exercise • Write a program that counts the number of unique words in a large text file (say, Moby Dick or the King James Bible). • Store the words in a collection • Report the number of unique words • Allow the user to search for a word, and report whether or not the word occurred • What collection would you use?

  3. Sets "the" "of" "if" "to" "down" "from" "by" "she" "you" "in" set.contains("to") true "him" "why" set.contains("be") false set • Set - a collection of unique values (no duplicates) • Allowed operations: add, remove, search (contains) • No indexes • Order is unimportant

  4. Set implementation • in Java, sets implement the Set interface in java.util • HashSet and TreeSet classes implement Set • HashSet • implemented using a "hash table" array • very fast • elements are stored in unpredictable order • TreeSet • implemented using a "binary search tree“ • pretty fast • elements are stored in sorted order

  5. Set methods List<String> list = new ArrayList<String>(); ... Set<Integer> set = new HashSet<Integer>(); Set<String> set2 = new HashSet<String>(list); • can construct an empty set, or one based on another collection

  6. Set operations addAll retainAll removeAll

  7. Sets and ordering • Sets do not use indexes; you cannot get element i • HashSet : elements are stored in an unpredictable order Set<String> names = new HashSet<String>(); names.add("Jake"); names.add("Robert"); names.add("Marisa"); names.add("Kasey"); System.out.println(names); // [Kasey, Robert, Jake, Marisa] • TreeSet : elements are stored in sorted order Set<String> names = new TreeSet<String>(); ... // [Jake, Kasey, Marisa, Robert]

  8. The "for each" loop for (typename : collection) { statements; } • Provides a clean syntax for looping over the elements of a Set, List, array, or other collection Set<Double> grades = new HashSet<Double>(); ... for (double grade : grades) { System.out.println(“Grade is: " + grade); }

  9. Exercise • Write a program that counts the number of unique words in a large text file (say, Moby Dick or the King James Bible). • Store the words in a collection • Report the number of unique words • Allow the user to search for a word, and report whether or not the word occurred • What collection would you use?

  10. Maps • map: Holds a set of unique keys and a collection of values, where each key is associated with one value. • a.k.a. "dictionary", "associative array", "hash" • basic map operations: • put(key, value ): Adds a mapping from a key toa value. • get(key): Retrieves thevalue mapped to the key • remove(key): Removesthe given key and itsmapped value map.get("Juliet") returns "Capulet"

  11. Maps and tallying 14 "M" "O" 3 "I" 16 keys values • a map can be thought of as generalization of an array • the "index" (key) can be any data type // (M)cCain, (O)bama, (I)ndependent • count votes: "MOOOOOOMMMMMOOOOOOMOMMIMOMMIMOMMIO"

  12. Map implementation • maps implement the Map interface in java.util • HashMap and TreeMap classes implement Map • HashMap • implemented using a "hash table" array • very fast • keys are stored in unpredictable order • TreeMap • implemented using a "binary search tree“ • pretty fast • keys are stored in sorted order • a map requires 2 type parameters • one for keys, one for values Map<String, Integer> ages = new HashMap<String, Integer>();

  13. Map methods

  14. Example Map<String, Integer> ages = new HashMap<String, Integer>(); ages.put("Marty", 19); ages.put("Geneva", 2); ages.put("Vicki", 57); System.out.println(ages); {Vicki=57, Marty=19, Geneva=2} Press any key to continue . . .

  15. keySet • keySet method returns a set of all keys in the map • can loop over the keys in a foreach loop • can get each key's associated value using get Map<String, Integer> ages = new HashMap<String, Integer>(); ages.put("Marty", 19); ages.put("Geneva", 2); ages.put("Vicki", 57); for (String name : ages.keySet()) { System.out.println(name + " -> " + ages.get(name)); }

  16. Exercise • Write a program to count the number of occurrences of each word in a file. • Print every word that appears in the file at least 1000 times, in alphabetical order. • Allow the user to type a word and report how many times that word appears in the file. • What collection is appropriate for this problem?

  17. Maps vs. Sets • A set is like a map from elements to boolean values. • We are remembering one related piece of information about every element: Is “Sam" in the set? (true/false) • A map allows the related piece of information to be something other than a boolean: What is “Sam" 's phone number? Set “Sam" true false Map “Sam" "206-685-2181"

More Related