+ All Categories
Home > Documents > Dictionaries

Dictionaries

Date post: 16-Mar-2016
Category:
Upload: lane
View: 35 times
Download: 0 times
Share this document with a friend
Description:
Dictionaries. Chapter 12. Chapter Contents. Specifications for the ADT Dictionary Entries and methods Using the ADT Dictionary English Dictionary Telephone Directory Address Book Java Class Library: the Interface Map. Specifications for the ADT Dictionary. - PowerPoint PPT Presentation
Popular Tags:
24
Dictionaries Chapter 12
Transcript
Page 1: Dictionaries

Dictionaries

Chapter 12

Page 2: Dictionaries

2

Chapter Contents

Specifications for the ADT Dictionary• Entries and methods

Using the ADT Dictionary• English Dictionary• Telephone Directory• Address Book

Java Class Library: the Interface Map

Page 3: Dictionaries

3

Specifications for the ADT Dictionary

Contains entries that each have two parts• A key word or search key• A value associated with the key

An English dictionary.

Dictionary organizes and identifies its entries by their search keys, rather than by position like List.

Key word enables you to locate the value.

Dictionary is also called map, table.

Page 4: Dictionaries

4

Specifications for the ADT DictionaryData• Pairs of objects (key, value)• Number of pairs in the collection

Operations• add

• remove

• getValue

• contains

• getKeyIterator

• isEmpty

• isFull

• getSize

• clear

Page 5: Dictionaries

5

Using the ADT DictionaryA directory of telephone numbers

What is search key and corresponding value?

A class diagram for a telephone directory.

Page 6: Dictionaries

6

Java Class Library: The Interface Map

A list of method signatures in Map• Note similarity to methods developed in this

chapterpublic Object put(Object key, Object value);public Object remove(Object key);public Object get(Object key);public boolean containsKey(Object key);public boolean containsValue(Object value);public Set keySet();public Collection values();public boolean isEmpty();public int size();public void clear();

Page 7: Dictionaries

Dictionary Implementations

Page 8: Dictionaries

8

Chapter Contents

Array-Based Implementations• The Entries• An Unsorted Array-Based Dictionary• A Sorted Array-Based Dictionary

Vector-Based ImplementationLinked Implementations• The Entries• An Unsorted Linked Dictionary• A Sorted Linked Dictionary

Page 9: Dictionaries

9

Array Based ImplementationsEach entry consists of two parts• A search key• A value

Strategies• Encapsulate the two parts into an object• Use two parallel arrays• Use a two dimensional array

Text focuses on first approach

Page 10: Dictionaries

10

Array-Based Implementations

3 ways to use arrays to represent dictionary entries:

(a)an array of entry objects;

(b) parallel arrays of search keys and values;

(c) 2-dimensional array of search keys and values

Page 11: Dictionaries

11

The EntriesA private class to represent the two-part entries

private class Entry implements java.io.Serializable{ private Object key;private Object value;

private Entry(Object searchKey, Object dataValue){ key = searchKey;

value = dataValue;} // end constructorprivate Object getKey(){ return key;} // end getKeyprivate Object getValue()}{ return value; } // end getValueprivate void setValue(Object dataValue){ value = dataValue; } // end setValue

} // end Entry

Page 12: Dictionaries

12

Unsorted Array-Based DictionaryUnsorted, array-based

dictionary:

(a)adding an entry;

(b) removing an entry.

Shifting of elements

Q: Alternative way for removing without shifting?

Page 13: Dictionaries

13

Sorted Array-Based Dictionary

Adding an entry to a sorted array-based dictionary: (a) search; (b) make room; (c) insert.

Page 14: Dictionaries

14

Sorted Array-Based Dictionary

Beginning of the classpublic class SortedArrayDictionary implements DictionaryInterface,

java.io.Serializable{ private Entry [] entries; // array of sorted entries

private int currentSize = 0; // number of entriesprivate final static int DEFAULT_MAX_SIZE = 25;public SortedArrayDictionary(){ entries = new Entry[DEFAULT_MAX_SIZE];

currentSize = 0;} // end default constructorpublic SortedArrayDictionary(int maxSize){ entries = new Entry[maxSize];

currentSize = 0;} // end constructor

. . .

Page 15: Dictionaries

15

Array-Based Implementations

Unsorted worst-case efficiencies• Addition O(1)• Removal O(n)• Retrieval O(n)• Traversal O(n)

Sorted worst-case efficiencies• Addition O(n)• Removal O(n)• Retrieval O(log n)• Traversal O(n)

Page 16: Dictionaries

16

Vector-Based Implementations

Similar in spirit to the array-based versionWith vector no need for …• makeRoom• doubleArray• isArrayFull• Counting entries, vector does so for you

Page 17: Dictionaries

17

Vector-Based ImplementationsBeginning of the class

public class SortedVectorDictionary implements DictionaryInterface,java.io.Serializable

{ private Vector entries;public SortedVectorDictionary(){ entries = new Vector(); // as needed, vector doubles its size} // end default constructorpublic SortedVectorDictionary(int maxSize){ entries = new Vector(maxSize);} // end constructor. . .

Page 18: Dictionaries

18

Linked Implementations

a) Store entries in a chain of linked nodes that each reference an entry object

Page 19: Dictionaries

19

Linked Implementations

b) Use parallel chains of search keys and values

figure 18-4 a & b

Page 20: Dictionaries

20

Linked Implementations

c) Use a chain of nodes that each reference a search key and value

figure 18-4 c

Page 21: Dictionaries

21

Adding to an unsorted linked dictionary.

Linked node implementation

Page 22: Dictionaries

22

Adding entry to a sorted linked dictionary

Algorithm add (key, value)• Allocate a new node containing key and value• If ( chain is empty of new node belongs at the

beginning)• Add new node to beginning of chain; increment length of

dictionary• else

• Search chain until either you find a node containing key or you pass the point where it should be

• If ( key is already in dictionary)• replace key’s associated value with new value.• else

• Insert new node before the last node that was examined during the search; increment the length of dictionary

Page 23: Dictionaries

23

Adding entry to a sorted linked dictionary

Page 24: Dictionaries

24

Linked Implementations

Unsorted worst-case efficiencies• Addition O(1)• Removal O(n)• Retrieval O(n)• Traversal O(n)

Sorted worst-case efficiencies• Addition O(n)• Removal O(n)• Retrieval O(n)• Traversal O(n)


Recommended