Map ADT by Dr. Bun Yue Professor of Computer Science 2013 CSCI 3333 Data Structures.

18
Map ADT by Dr. Bun Yue Professor of Computer Science [email protected] http://sce.uhcl.edu/yue/ 2013 CSCI 3333 Data Structures

description

Maps  A map models a searchable collection of key-value entries  The main operations of a map are for searching, inserting, and deleting items  Multiple entries with the same key are not allowed => the key is unique.  Applications: address book student-record database

Transcript of Map ADT by Dr. Bun Yue Professor of Computer Science 2013 CSCI 3333 Data Structures.

Page 1: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Map ADT

by

Dr. Bun YueProfessor of Computer Science

[email protected]://sce.uhcl.edu/yue/

2013

CSCI 3333 Data Structures

Page 2: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Acknowledgement

Mr. Charles Moen Dr. Wei Ding Ms. Krishani Abeysekera Dr. Michael Goodrich

Page 3: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Maps A map models a searchable collection

of key-value entries The main operations of a map are for

searching, inserting, and deleting items

Multiple entries with the same key are not allowed => the key is unique.

Applications: address book student-record database

Page 4: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

An Example Map ADT Map ADT methods:

get(k): if the map M has an entry with key k, return its associated value; else, return null

put(k, v): insert entry (k, v) into the map M; if key k is not already in M, then return null; else, return old value associated with k

remove(k): if the map M has an entry with key k, remove it from M and return its associated value; else, return null

size(), isEmpty() keys(): return an iterator of the keys in M values(): return an iterator of the values in M

Page 5: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

ExampleOperationOutput Map

isEmpty() true Øput(5,A) null (5,A)put(7,B) null (5,A),(7,B)put(2,C) null (5,A),(7,B),(2,C)put(8,D) null (5,A),(7,B),(2,C),(8,D)put(2,E) C (5,A),(7,B),(2,E),(8,D)get(7) B (5,A),(7,B),(2,E),(8,D)get(4) null (5,A),(7,B),(2,E),(8,D)get(2) E (5,A),(7,B),(2,E),(8,D)size() 4 (5,A),(7,B),(2,E),(8,D)remove(5) A (7,B),(2,E),(8,D)remove(2) E (7,B),(8,D)get(2) null (7,B),(8,D)isEmpty() false (7,B),(8,D)

Page 6: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Comparison to java.util.Map

Map ADT Methods java.util.Map Methods

size() size()isEmpty() isEmpty()get(k) get(k)put(k,v) put(k,v)remove(k) remove(k)keys() keySet().iterator()values() values().iterator()

Page 7: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Java Map Interface

Map is an interface in Java. Many general implementations:

HashMap Hashtable LinkedHashMap TreeMap …

Sub-interfaces: SortedMap ConcurrentMap …

Page 8: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Map in Perl

The built-in hash data structure in Perl is basically a map.

Hashes in Perl starts with the symbol %.

Each hash value must be a scalar.

Page 9: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Hash Example in Perl%h = ("yue", 1, "moen", 5, "davari", 2);$h{"yue"} = 6;$h{"abeysekera"} = 9;

while (($key, $value) = each %h) { print "$key => $value\n";}

foreach $key (sort keys %h) { print "$key => $h{$key}\n";}

delete($h{"yue"});foreach $key (sort keys %h) { print "$key => $h{$key}\n";}

Page 10: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Output

abeysekera => 9davari => 2moen => 5yue => 6abeysekera => 9davari => 2moen => 5yue => 6abeysekera => 9davari => 2moen => 5

Page 11: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

A Simple List-Based Map

We can efficiently implement a map using an unsorted list We store the items of the map in a list S (based

on a doubly-linked list), in arbitrary order

trailerheader nodes/positions

entries9 c 6 c 5 c 8 c

Page 12: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

The get(k) Algorithm

Algorithm get(k):B = S.positions() {B is an iterator of the positions in S}while B.hasNext() do

p = B.next() fthe next position in Bgif p.element().key() = k then

return p.element().value()return null {there is no entry with key equal to k}

Page 13: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

The put(k,v) Algorithm

Algorithm put(k,v):B = S.positions()while B.hasNext() do

p = B.next()if p.element().key() = k then

t = p.element().value()B.replace(p,(k,v))return t {return the old value}

S.insertLast((k,v))n = n + 1 {increment variable storing number of entries}return null {there was no previous entry with key equal

to k}

Page 14: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

The remove(k) Algorithm

Algorithm remove(k):B =S.positions()while B.hasNext() do

p = B.next()if p.element().key() = k then

t = p.element().value()S.remove(p)n = n – 1 {decrement number of entries}return t {return the removed value}

return null {there is no entry with key equal to k}

Page 15: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Performance of a List-Based Map

Performance: put, get and remove take O(n) time since in the

worst case (the item is not found) we traverse the entire sequence to look for an item with the given key

The unsorted list implementation is effective only for maps of small size or for maps in which puts are the most common operations, while searches and removals are rarely performed (e.g., historical record of logins to a workstation)

Page 16: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Other Map Implementations

Other possible implementations of a map: Trees: e.g. BST.

put, get and remove: average time of O(lg n).

Hash: put, get and remove: average time of

O(1).

Page 17: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Maps and Dictionaries

Maps and dictionaries may sometime be used in an interchangeable manner.

One way of differentiation: Map: keys are unique. Dictionary: keys may not be unique.

More than one key-value pairs may have the same key values.

Page 18: Map ADT by Dr. Bun Yue Professor of Computer Science  2013  CSCI 3333 Data Structures.

Questions and Comments?