Download presentation
Presentation is loading. Please wait.
Published byHannah Thornton Modified over 9 years ago
1
Dictionaries Chapter 12
2
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
3
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.
4
4 Specifications for the ADT Dictionary Data Pairs of objects (key, value) Number of pairs in the collection Operations add remove getValue contains getKeyIterator isEmpty isFull getSize clear
5
5 Using the ADT Dictionary A directory of telephone numbers What is search key and corresponding value? A class diagram for a telephone directory.
6
6 Java Class Library: The Interface Map A list of method signatures in Map Note similarity to methods developed in this chapter public 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();
7
Dictionary Implementations
8
8 Chapter Contents Array-Based Implementations The Entries An Unsorted Array-Based Dictionary A Sorted Array-Based Dictionary Vector-Based Implementation Linked Implementations The Entries An Unsorted Linked Dictionary A Sorted Linked Dictionary
9
9 Array Based Implementations Each 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
10
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
11
11 The Entries A 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 constructor private Object getKey() {return key;} // end getKey private Object getValue()} {return value;} // end getValue private void setValue(Object dataValue) {value = dataValue;} // end setValue } // end Entry
12
12 Unsorted Array-Based Dictionary Unsorted, array-based dictionary: (a)adding an entry; (b) removing an entry. Shifting of elements Q: Alternative way for removing without shifting?
13
13 Sorted Array-Based Dictionary Adding an entry to a sorted array- based dictionary: (a) search; (b) make room; (c) insert.
14
14 Sorted Array-Based Dictionary Beginning of the class public class SortedArrayDictionary implements DictionaryInterface, java.io.Serializable {private Entry [] entries;// array of sorted entries private int currentSize = 0; // number of entries private final static int DEFAULT_MAX_SIZE = 25; public SortedArrayDictionary() {entries = new Entry[DEFAULT_MAX_SIZE]; currentSize = 0; } // end default constructor public SortedArrayDictionary(int maxSize) {entries = new Entry[maxSize]; currentSize = 0; } // end constructor...
15
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)
16
16 Vector-Based Implementations Similar in spirit to the array-based version With vector no need for … makeRoom doubleArray isArrayFull Counting entries, vector does so for you
17
17 Vector-Based Implementations Beginning 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 constructor public SortedVectorDictionary(int maxSize) {entries = new Vector(maxSize); } // end constructor...
18
18 Linked Implementations a) Store entries in a chain of linked nodes that each reference an entry object
19
19 Linked Implementations b) Use parallel chains of search keys and values figure 18-4 a & b
20
20 Linked Implementations c) Use a chain of nodes that each reference a search key and value figure 18-4 c
21
21 Adding to an unsorted linked dictionary. Linked node implementation
22
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
23
23 Adding entry to a sorted linked dictionary
24
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)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.