2013-04-17 26 views

回答

1

只需创建一个具有两个属性(键和值)的类并提供适当的方法。

+0

那将是一张地图 – karthick

+0

我觉得'发表评论' – Scotch

+0

你的答案就够了吗? –

1

我正在搭便车,并且猜测你的意思是HashMap,并且你没有HashMap API的原因是你正在使用Java ME。

答案是使用HashTable ...... Java ME确实有AFAIK。


在另一方面,如果这是一个家庭作业的问题,你已被要求从头开始实现自己的哈希表,那么你应该通过阅读了如何哈希表的工作开始。请参阅您的讲义,你的数据结构教科书...或查找“哈希表”在维基百科上/谷歌

+1

我的猜测是这是一项家庭作业。 – jahroy

0

哈希地图的基础是:

1)有后备存储 - 阵列(或相当于)至少与包含的条目数一样大。两个数组中的一个用于键值1,或者是键值对的元组阵列(后者可能更好)

2)一个函数,用于决定我们将新键放入哪个键阵列索引。通常这将是key.HashCode()%array.Length - 但是如果它已经持有一个密钥并且它不是相同的密钥(通过key.Equals(),那么你尝试右边的下一个桶,直到我们找到一个,只要我们在从哈希映射中删除一个键时进行相反的操作就可以了 - 换句话说,因为这个'滑动键'已经完成了,因为没有如果我们打一个洞,我们必须看看是否有一个关键点需要滑进来填补这个缺口(例如,不要将任何关键点比我们要检查的第一个位置向左滑动,否则如果我们可以向左滑动,向左滑动)

3)现在,要查看HashMap中是否存在某个键,请计算我们放置它的位置并检查该索引。如果它被占用,并等于(),找到它。如果它被占用并且不匹配,则以相同的方式在右边检查一个。如果它是空的,没有找到它。

4)多一个操作,一个艰难的 - 当我们接近填满时重建后备存储的两倍大小(越接近填满我们得到的效率越差,所以你想要在填满之前以双重方式)。您必须为后备存储分配两倍的空间,重新计算旧存储中每个密钥的位置,复制密钥和值,删除旧存储并安装新存储。

相关问题