码迷,mamicode.com
首页 > 编程语言 > 详细

词典的实现(2)-借助顺序表(数组)实现词典

时间:2015-06-17 00:15:01      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

一,思路

1,词典实现类ArrayDictionary.java肯定要implements 词典的接口DictionaryInterface.java(参考:http://www.cnblogs.com/hapjin/p/4573826.html)。其次,为了序列化,还要implements Serializable接口

2,由于词典中的每个元素是一个键值对。因此,需要将查找键 封装在同一个对象中,因而定义了Entry.java来表示词典中的每个元素。其中,Entry类是作为ArrayDictionary的内部类来实现的。

3,由于每个Entry对象表示一个词典元素,因此ArrayDictionary.java需要一个Entry类型的数组来存放词典元素。这也是文章的标题--借助顺序表来实现词典的原因。

再深入讨论下,我们知道在JAVA类库中ArrayList.java就相当于已经帮程序员实现好了一个顺序表(数组),我们不需要再去关注数组的具体实现细节以及如何遍历数组,而是直接用ArrayList.java中的各种方法(add,remove……)来完成数组的基本操作,通过 iterator()方法获得遍历数组的迭代器。也可以借助ArrayList.java中方法来辅助实现DictionaryInterface接口中定义的方法。

但是,在本例中,采用的是自定义数组来实现词典的,因此就需要根据DictionaryInterface接口中的方法以及自已的需要来完成ArrayDictionary.java中的方法。

下面,具体理清下迭代器的实现思路:在ArrayDictionary.java中定义了三个私有内部类分为表示实现三个迭代器:

class EntryIterator<Entry>实现遍历Entry数组的迭代器

class KeyIterator<K>实现遍历查找键的迭代器

class ValueIterator<V>实现 值(Value) 的迭代器

其中,后两个迭代器会用到遍历Entry数组的迭代器,因为键(Key)和值(Value)是封装在Entry中的。

同时,还ArrayDictionary.java定义了三个相应的获取遍历器的方法来获取上述三个遍历器。

 

 

未完待续……

 

词典的实现(2)-借助顺序表(数组)实现词典

标签:

原文地址:http://www.cnblogs.com/hapjin/p/4582064.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!