CSE 143 Lecture 15 Sets and Maps; Iterators reading: 11.1 - 11.3; 13.2; 15.3; 16.5 slides adapted from Marty Stepp

Slides:



Advertisements
Similar presentations
Double-Linked Lists and Circular Lists
Advertisements

Sets and Maps Part of the Collections Framework. 2 The Set interface A Set is unordered and has no duplicates Operations are exactly those for Collection.
Chapter 6 The Collections API. Simple Container/ Iterator Simple Container Shape [] v = new Shape[10]; Simple Iterator For( int i=0 ; i< v.length ; i++)
CSE 143 Lecture 22: Advanced List Implementation (ADTs; interfaces; abstract classes; inner classes; generics; iterators)
CSci 143 Sets & Maps Adapted from Marty Stepp, University of Washington
Algorithm Programming Containers in Java Bar-Ilan University תשס " ו by Moshe Fresko.
24-Jun-15 Introduction to Collections. 2 Collections A collection is a structured group of objects Java 1.2 introduced the Collections Framework Collections.
Lists in Java Part of the Collections Framework. Kinds of Collections Collection --a group of objects, called elements –Set-- An unordered collection.
Copyright 2006 by Pearson Education 1 Building Java Programs Chapter 11: Java Collections Framework.
CSE 143 Lecture 15 Sets and Maps reading: ; 13.2 slides created by Marty Stepp
CSE 143 Lecture 7 Sets and Maps reading: ; 13.2 slides created by Marty Stepp
Chapter 19 Java Data Structures
Building Java Programs Chapter 11 Java Collections Framework.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 22 Java Collections.
Collections F The limitations of arrays F Java Collection Framework hierarchy  Use the Iterator interface to traverse a collection  Set interface, HashSet,
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Chapter 22 Java Collections.
Collections in Java. Kinds of Collections Collection --a group of objects, called elements –Set-- An unordered collection with no duplicates SortedSet.
(c) University of Washington14-1 CSC 143 Java Collections.
CSE 143 Lecture 11 Maps Grammars slides created by Alyssa Harding
CSE 143 Lecture 2 More ArrayList ; classes and objects reading: 10.1; slides created by Marty Stepp and Hélène Martin
CSE 143 Lecture 4 ArrayList Reading: 10.1 slides created by Marty Stepp
CSS446 Spring 2014 Nan Wang.  Java Collection Framework ◦ Set ◦ Map 2.
Building Java Programs Chapter 11 Lecture 11-1: Sets and Maps reading:
1 TCSS 143, Autumn 2004 Lecture Notes Java Collection Framework: Maps and Sets.
1 Building Java Programs Java Collections Framework.
Collections in Java. 2 Collections Hierarchy > ArrayListVector Stack LinkedList > Arrays Collections.
CS-2852 Data Structures LECTURE 7A Andrew J. Wozniewicz Image copyright © 2010 andyjphoto.com.
Linked Lists Ellen Walker CPSC 201 Data Structures Hiram College.
CSE 143 Lecture 14 (B) Maps and Grammars reading: 11.3 slides created by Marty Stepp
CSE 143 Lecture 24 Advanced collection classes (ADTs; abstract classes; inner classes; generics; iterators) read 11.1, 9.6, , slides.
Building Java Programs Bonus Slides Hashing. 2 Recall: ADTs (11.1) abstract data type (ADT): A specification of a collection of data and the operations.
Building Java Programs Chapter 11 Java Collections Framework Copyright (c) Pearson All rights reserved.
Collections Mrs. C. Furman April 21, Collection Classes ArrayList and LinkedList implements List HashSet implements Set TreeSet implements SortedSet.
1 TCSS 342, Winter 2005 Lecture Notes Linked List Implementation Weiss Ch. 6, pp Weiss Ch. 17, pp
List Interface and Linked List Mrs. Furman March 25, 2010.
CSE 143 Lecture 14 Maps/Sets; Grammars reading: slides adapted from Marty Stepp and Hélène Martin
Sets and Maps Part of the Collections Framework. 2 The Set interface A Set is unordered and has no duplicates Operations are exactly those for Collection.
Iteration Abstraction SWE Software Construction Fall 2009.
1 Java's Collection Framework Map and Sets. 2 Collection Framework  A collections framework is a unified architecture for representing and manipulating.
CMSC 202 Containers and Iterators. Container Definition A “container” is a data structure whose purpose is to hold objects. Most languages support several.
CSE 143 Lecture 12: Sets and Maps reading:
1 Copyright © 2011 Tata Consultancy Services Limited COLLECTIONS By TEAM 5 Rajendhiran Sivan Christi Yashwanth Bijay Smruthi Satyajit.
CS 46B: Introduction to Data Structures July 21 Class Meeting Department of Computer Science San Jose State University Summer 2015 Instructor: Ron Mak.
CSE 373 Data Structures and Algorithms Lecture 9: Set ADT / Trees.
CSE 373: Data Structures and Algorithms Lecture 16: Hashing III 1.
CSE 143 Lecture 11: Sets and Maps reading:
3-1 Java's Collection Framework Another use of polymorphism and interfaces Rick Mercer.
slides adapted from Marty Stepp and Hélène Martin
CSE 143 Lecture 16 Iterators; Grammars reading: 11.1, 15.3, 16.5 slides created by Marty Stepp
Building Java Programs Chapter 11 Java Collections Framework Copyright (c) Pearson All rights reserved.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Java From Control Structures through Data Structures by.
Slides by Donald W. Smith
Building Java Programs
CSE 143 Lecture 14 Interfaces; Abstract Data Types (ADTs)
CSE 373 Implementing a Stack/Queue as a Linked List
slides created by Marty Stepp and Hélène Martin
CSE 143 Lecture 27: Advanced List Implementation
Lecture 26: Advanced List Implementation
slides adapted from Marty Stepp
Iteration Abstraction
Welcome to CSE 143! Go to pollev.com/cse143.
CSE 373 Java Collection Framework, Part 2: Priority Queue, Map
slides created by Marty Stepp
slides created by Marty Stepp
CSE 143 Lecture 15 Sets and Maps; Iterators reading: ; 13.2
CSE 143 Lecture 8 Iterators; Comparable reading: 11.2; 10.2
slides adapted from Marty Stepp and Hélène Martin
CSE 373 Java Collection Framework reading: Weiss Ch. 3, 4.8
Iterators Dan Fleck.
CSE 143 Lecture 21 Advanced List Implementation
Presentation transcript:

CSE 143 Lecture 15 Sets and Maps; Iterators reading: ; 13.2; 15.3; 16.5 slides adapted from Marty Stepp

2 Sets and ordering HashSet : elements are stored in an unpredictable order Set names = new HashSet (); 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 their "natural" sorted order Set names = new TreeSet ();... // [Jake, Kasey, Marisa, Robert] LinkedHashSet : elements stored in order of insertion Set names = new LinkedHashSet ();... // [Jake, Robert, Marisa, Kasey]

3 keySet and values 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 by calling get on the map Map ages = new TreeMap (); ages.put("Marty", 19); ages.put("Geneva", 2); // ages.keySet() returns Set ages.put("Vicki", 57); for (String name : ages.keySet()) { // Geneva -> 2 int age = ages.get(name); // Marty -> 19 System.out.println(name + " -> " + age); // Vicki -> 57 } values method returns a collection of all values in the map –can loop over the values in a foreach loop –no easy way to get from a value to its associated key(s)

4 Problem: opposite mapping It is legal to have a map of sets, a list of lists, etc. Suppose we want to keep track of each TA's GPA by name. Map taGpa = new HashMap (); taGpa.put("Jared", 3.6); taGpa.put("Alyssa", 4.0); taGpa.put("Steve", 2.9); taGpa.put("Stef", 3.6); taGpa.put("Rob", 2.9);... System.out.println("Jared's GPA is " + taGpa.get("Jared")); // 3.6 This doesn't let us easily ask which TAs got a given GPA. –How would we structure a map for that?

5 Reversing a map We can reverse the mapping to be from GPAs to names. Map taGpa = new HashMap (); taGpa.put(3.6, "Jared"); taGpa.put(4.0, "Alyssa"); taGpa.put(2.9, "Steve"); taGpa.put(3.6, "Stef"); taGpa.put(2.9, "Rob");... System.out.println("Who got a 3.6? " + taGpa.get(3.6)); // ??? What's wrong with this solution? –More than one TA can have the same GPA. –The map will store only the last mapping we add.

6 Proper map reversal Really each GPA maps to a collection of people. Map > taGpa = new HashMap >(); taGpa.put(3.6, new TreeSet ()); taGpa.get(3.6).add("Jared"); taGpa.put(4.0, new TreeSet ()); taGpa.get(4.0).add("Alyssa"); taGpa.put(2.9, new TreeSet ()); taGpa.get(2.9).add("Steve"); taGpa.get(3.6).add("Stef"); taGpa.get(2.9).add("Rob");... System.out.println("Who got a 3.6? " + taGpa.get(3.6)); // [Jared, Stef] –must be careful to initialize the set for a given GPA before adding

7 Exercises Modify the word count program to print every word that appeared in the book at least 1000 times, in sorted order from least to most occurrences. Write a program that reads a list of TA names and quarters' experience, then prints the quarters in increasing order of how many TAs have that much experience, along with their names. Allison 51 qtr: [Brian] Alyssa 82 qtr:... Brian 15 qtr: [Allison, Kasey] Kasey 5...

8 Maps vs. sets A set is like a map from elements to boolean values. –Set: Is Marty found in the set? (true/false) –Map: What is Marty's phone number? Set "Marty" true false Map "Marty" " "

Iterators reading: 11.1; 15.3; 16.5

10 Examining sets and maps elements of Java Set s and Map s can't be accessed by index –must use a "foreach" loop: Set scores = new HashSet (); for (int score : scores) { System.out.println("The score is " + score); } –Problem: foreach is read-only; cannot modify set while looping for (int score : scores) { if (score < 60) { // throws a ConcurrentModificationException scores.remove(score); } }

11 Iterators (11.1) iterator: An object that allows a client to traverse the elements of any collection. –Remembers a position, and lets you: get the element at that position advance to the next position remove the element at that position index value size6 list current element:9 current index:2 iterator set "the" "to" "from" "we" current element:"from" next element:"the" iterator

12 Iterator methods Iterator interface in java.util –every collection has an iterator() method that returns an iterator over its elements Set set = new HashSet ();... Iterator itr = set.iterator();... hasNext() returns true if there are more elements to examine next() returns the next element from the collection (throws a NoSuchElementException if there are none left to examine) remove() removes the last value returned by next() (throws an IllegalStateException if you haven't called next() yet)

13 Iterator example Set scores = new TreeSet (); scores.add(94); scores.add(38); // Jenny scores.add(87); scores.add(43); // Marty scores.add(72);... Iterator itr = scores.iterator(); while (itr.hasNext()) { int score = itr.next(); System.out.println("The score is " + score); // eliminate any failing grades if (score < 60) { itr.remove(); } System.out.println(scores); // [72, 87, 94]

14 Iterator example 2 Map scores = new TreeMap (); scores.put("Jenny", 38); scores.put("Stef", 94); scores.put("Greg", 87); scores.put("Marty", 43); scores.put("Angela", 72);... Iterator itr = scores.keySet().iterator(); while (itr.hasNext()) { String name = itr.next(); int score = scores.get(name); System.out.println(name + " got " + score); // eliminate any failing students if (score < 60) { itr.remove(); // removes name and score } System.out.println(scores); // {Greg=87, Stef=94, Angela=72}

15 A surprising example What's bad about this code? List list = new LinkedList ();... (add lots of elements)... for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } front= datanext 42 datanext -3 datanext 17 element 0element 1element 2

16 Iterators and linked lists Iterators are particularly useful with linked lists. –The previous code is O(N 2 ) because each call on get must start from the beginning of the list and walk to index i. –Using an iterator, the same code is O(N). The iterator remembers its position and doesn't start over each time. current element:-3 current index: 1 iterator front= datanext 42 datanext -3 datanext 17 element 0element 1element 2

17 Exercise Modify the Book Search program from last lecture to eliminate any words that are plural or all-uppercase from the collection. Modify the TA quarters experience program so that it eliminates any TAs with 3 quarters or fewer of experience.

18 ListIterator ListIterator li = myList.listIterator(); lists have a more powerful ListIterator with more methods –can iterate forwards or backwards –can add/set element values (efficient for linked lists) add( value ) inserts an element just after the iterator's position hasPrevious() true if there are more elements before the iterator nextIndex() the index of the element that would be returned the next time next is called on the iterator previousIndex() the index of the element that would be returned the next time previous is called on the iterator previous() returns the element before the iterator (throws a NoSuchElementException if there are none) set( value ) replaces the element last returned by next or previous with the given value