1
|
- Announcements
- hw5 due tonight
- Spring break next week
- hw6 due two weeks from tonight
- Agenda
- questions
- TreeMap
- hw6
- stub programming
|
2
|
- arrays and ArrayLists locate entries by index
- index is an integer position, starting at 0
- A Map locates entries by key
- key is often a String (think dictionary, phone book)
- A map stores key-value pairs
- key: “Java” value: “a modern OO language”
- key: “UMass” value:
|
3
|
- Class Integer to wrap primitive int
- Iterator practice
- Useful toString (for debugging)
- Remember to cast
- Same value stored twice
- Keys that aren’t Strings
|
4
|
- Set keys = map.keySet();
- Iterator keysIterator =
keys.iterator();
- ask the map for its keySet
- ask the keySet to give you an Iterator
- keysIterator is like a list of the keys in the map
- You can infer from this code that
- Set and Iterator are classes in the Java API
- keySet is a method in class TreeMap; it returns a Set
- iterator is a method in class Set; it returns an Iterator
|
5
|
- while ( keysIterator.hasNext() )
{
- String key = (String)keysIterator.next();
- terminal.println( " … "
+ (Integer)map.get( key)) );
- }
- hasNext() returns false when at end of list
- next() returns a reference to the next Object in the list
- Iterator next method, like TreeMap get method, returns just an Object.
Need two casts.
|
6
|
- Dictionary has no unit test
- Class Lookup is a client for Dictionary
(and tests it thoroughly)
- All of Lookup is static
- > java Lookup <word> <word> … all
- Lookup.java sends toString messages to a Definition object (line 53) and
to a Dictionary object (line 103)
|
7
|
|
8
|
- To print the whole Dictionary, Lookup sends a toString message, invoking
Dictionary toString method
(line 70)
- Subtle, since there’s no index to loop with
- Uses an Iterator object - Java tool
custom designed for looping
- Iterator API has just two methods:
- boolean hasNext()
- Object next()
|
9
|
- while ( wordIterator.hasNext() )
{
- word =
(String)wordIterator.next();
- definition = this.getEntry(
word );
- str += word + ":\n"
+ definition.toString() +
"\n";
- }
- use the key to look up a Definition
- send the Definition a toString message
- add two lines to the String str we are building to represent the whole Dictionary
|
10
|
- declaration: TreeMap mapName;
- creation: new TreeMap( );
- put: mapName.put(Object
key, Object obj)
- get: (Type)mapName.get(Object
key)
-
cast to proper Type
- length: mapName.size( )
- looping: get Set of keys from the map, then get an Iterator from the set mapName.keySet(
).iterator( )
|
11
|
- The same value may appear more than once in a collection (array,
ArrayList or Map)
- my wife and I have the same phone number
- “field” and “instance variable” have the same definition
- in an array, foo[3] may == foo[7]
- In a Map, keys are unique (like index in an array)
- If you want to arrange for one person to have more than one phone number
or one word to have more than one definition you need to work harder …
|
12
|
- Dictionary might map a word to an ArrayList of Definition instances
- Registrar’s database maps a student ID to a StudentRecord object that
contains a Map of courses taken (key course name, value an object
storing the grade)
- Screen maintains a private field that’s an array of arrays of char:
- private char[][] pixels;
|
13
|
|
14
|
- Due Thursday after Spring break
- TreeMap practice
- class Directory
- little Bank, using a TreeMap
|
15
|
- Model windows folder
- Contains TextFiles
- (not other Folders - wait for Chapter 5)
- API: create, add file to, get file from, get size, get owner, get
create/mod date
- Design: Directory object has a TreeMap field storing TextFile objects
keyed by String filename
- You write this for homework
|
16
|
- Start with all javadoc comments and method declarations, empty method
bodies
- Fill in code a method at a time (perhaps
even a line at a time)
- Compile and test as you go along!
|