Sets and Maps

advertisement
Sets and Maps
Purpose:
In this lecture we discus two interfaces, the Set and the Map
and sets up our discussion of HashSet, HashMap, TreeMap & TreeSet
Resources:
Barrons Chapter 11 p.368 (Only Collections, Sets & Maps
p.368-369 & p.377 & p.382)
Java Essentials Study Guide Chapter 17 p.303
Java Fundanentals, Lambert Chapter 17 p.567
Handouts:
1.
2.
3.
4.
CreateMySet.java
Map-Key-Value.java
Sets Maps and the ADTs.doc
set map interfaces.Doc
Intro: Two ADT’s Set and Map provide rules for creating Data Structures that
conform to specific behaviors
We are required to understand the requirements of these two interfaces and then,
in the next few lectures, we will discuss and work with the following
implementations of these interfaces:
HashSet
HashMap
TreeMap
TreeSet
In this Lecture we will discuss:
The Collections API
Set Interface
Map Interface
Collections:
Collections are simply a group of objects
There are collections that permit duplicate objects while others do not
Some collections order the objects while others do not
A collection data type has the following behaviors:
insert elements
remove elements
iterate over the elements in the collection
Set:
Set is a collection
Set is not ordered
Set does NOT allow duplicate elements
Set may have a null element
Insert a unique object / element into the Set
Remove an object / element from the Set
Determine if and object / element is in the Set
Use the Iterator to traverse the elements in the Set
Hashset (hash table) and TreeSet (BST) implement the Set Interface
interface java.util.Set
Required methods
boolean add(E o)
adds element if unique otherwise leaves set unchanged
boolean contains(Object x)
determines if a given object is an element of the set
boolean remove(Object x)
removes the element from the set or leaves set unchanged
int size( )
number of elements in the set
Iterator <E> iterator( )
allows for set traversal
Map:
Map is not a real collection
Maps keys to values
Map does NOT allow duplicate elements as each Key in a Map has only one (a unique)
Value
However, different Keys can map to the same object (value)
The Key and the Value can be any object
Insert a key / value pair into a Map
Obtain a value thru its Key
Determine if a Target Key is in the Map
Traverse the elements of the Map using the keySet method
Iterate thru the Map elements (iterate using the Keys)
The TreeMap and the HashMap implement the Map Interface
interface java.util.Map (AB only)
Required methods
Object put(Object key, Object value)
Associates a Value with a Key and places this pair into the Map
REPLACES a prior value if the Key already is Mapped to a value
Returns the PREVIOUS Key associated value or NULL if no prior
mapping exists
Object get(Object key)
Returns the value associated with a Key OR
NULL if no map exists or the Key does map to a NULL
Object remove (Object key)
Removes the map to this Key and returns its associated value OR
returns NULL if no map existed or mapping was to NULL
boolean containsKey(Object key)
True if there is a key / value map otherwise false
int size( )
Returns the number key / value mappings
Set <E> keySet( )
Retuns the Set of keys in the map
You can map:
names to phone numbers
College friends to the school they attend
Animals to animal sounds
Coin name to its value
Car model to its make
Log in IDs to Passwords
The keySet produces a Set of keys from which we can visit all of the elements of a
HashMap or a TreeMap
We can visit all of the values (elements) by iterating over the key Set that is returned
from the call to the Map’s keySet method
The following class contains Key / Value elements
Student ID is the Key and the Name is the Value
public class Student
{
Integer id;
String name;
public myStuff(int i, String n)
{
id = new Integer(i);
name = n;
}
public Integer getId()
{
return id;
}
public String getName()
{
return name;
}
public String toString()
{
return id.toString() + " , " + name;
}
}
Illustration of a Map using the HashMap class:
Map stuffMap = new HashMap();
myStuff[] ms = new myStuff[5];
ms[0] = new myStuff(21,"Farrell");
ms[1] = new myStuff(31,"Castro");
ms[2] = new myStuff(11,"Defazio");
ms[3] = new myStuff(61,"Zegers");
ms[4] = new myStuff(86,"Rogers");
for (int t=0; t < 5; t++)
{
stuffMap.put(ms[t].getId(), ms[t]);
}
for (int t=0; t < 5; t++)
{
myStuff x = (myStuff)stuffMap.get(ms[t].getId());
System.out.println(x.toString());
}
MAP accepts "elements" as 2 seperate objects, a key and the data
A MAP ADT must conform to the following:
Put Associates the specified value with the specified key
in this map If the map previously contained a mapping
for this key, the old value is replaced.
Get -- Returns the value to which this map maps the specified key
Remove -- Removes the mapping for this key from this map if present
Containskey - Returns true if this map contains a mapping for the
specified key
Keyset - Returns a set view of the keys contained in this map.
AP AB Subset Requirements:
Understand the requirements, restrictions and behaviors of the Set and Map ADT’s
Project:
Create Your Own Set and Map Classes
Download