1,詞典是這樣的一種數據結構:它能根據給定的鍵(索引值,key)來查找其對應的值(value)是否存在,在JAVA中主要由java.util.HashMap來完成該功能。如電話本就是詞典的一個具體實例,其中名字做爲鍵,電話號碼做爲值。客戶端能夠經過構造一個電話原本進行查詢。本系列文章本身編程實現了Map這一數據結構,模擬實現了詞典的功能,並給出了詞典的兩個具體應用---①根據姓名查找電話號碼;②統計單詞的出現頻率html
2,ADT詞典接口DictionaryInterface.java的定義java
詞典接口定義了該詞典所具備的基本功能,如添加元素、查詢元素……這樣,具體的實現類經過implements該接口完成具體的電話本功能的實現。編程
詳細解釋看代碼註釋數組
DictionaryInterface.java代碼以下:數據結構
1 package dictionary; 2 3 import java.util.Iterator; 4 5 public interface DictionaryInterface<K, V> { 6 /* 7 * Task: 將一個新元素插入詞典。若給定的鍵已在詞典中,則替換相應的值 8 * @param key 新元素的的查找鍵 9 * @param value 與鍵關聯的值對象 10 * @return 若新元素被插入到詞典中則返回null,若與key關聯的value被替換,則返回原來的value 11 */ 12 public V add(K key, V value); 13 14 /* 15 * Task: 從詞典中刪除一個指定的元素 16 * @param key 欲刪除的元素的key對象 17 * @return 返回與key關聯的value,若不存在這樣的對象則返回null 18 */ 19 public V remove(K key); 20 21 /* 22 * Task: 檢索與給定的鍵相關聯的值 23 * @param key 待檢索元素的查找鍵對象 24 * @return 與查找鍵對象相關聯的值,若不存在這樣的對象則返回null 25 */ 26 public V getValue(K key); 27 28 /* 29 * Task: 肯定一個指定的元素在不在詞典中 30 * @param key 待查找的元素的鍵對象 31 * @return 若key與詞典中的一個元素相關聯則返回true 32 */ 33 public boolean contains(K key); 34 35 /* 36 * Task: 建立一個迭代器遍歷詞典中全部的查找鍵 37 * @return 返回一個迭代器,提供對詞典中的鍵對象的順序訪問 38 */ 39 public Iterator<K> getKeyIterator(); 40 41 /* 42 * Task: 建立一個迭代器遍歷詞典中全部的值 43 * @return 返回一個迭代器,提供對詞典中值的順序訪問 44 */ 45 public Iterator<V> getValueIterator(); 46 47 public boolean isEmpty();//判斷詞典是否爲空 48 public boolean isFull();//判斷詞典是否滿 49 public int getSize();//返回詞典中當前元素(鍵-值二元組)個數 50 public void clear();//刪除詞典中全部的元素 51 }
參考資料:post
詞典的實現(3)--使用JAVA類庫ArrayList實現Map數據結構url
散列之HashTable學習code