我有一组具有唯一ids的元素。
我希望以某种方式对它们进行排序,因此,给定一个元素id,我将有效地返回它的前一个和下一个元素。
如果我用任何有指针的语言实现它,我就会用它创建一个hashTable,并且双链接列表中的每个节点将分别指向前一个和下一个元素。
您将如何用java实现它?
顺便说一下,我应该使用hashMap/hashtable还是hashSet?
发布于 2013-12-21 22:08:31
如果您想在哈希表上实际使用双链接列表视图,最好的方法是自己实现它。每个节点都知道其内容的值,存储桶中的下一个元素(单链接桶很容易),以及双链接列表中的前一个/下一个元素。然后,您可以自由地实现ListIterator提供程序和怪异的Deque实现。
这有点像诚实地重新发明轮子,但是没有标准的哈希实现也提供了对迭代器之外的链接列表的真正有用的访问。
参见我写的这门课;它是一个Set而不是一个Map,其中包含一些额外的花哨东西(为了获得一个随机元素而不是最近添加的元素),但是它应该给您一些想法。我还建议阅读java.util.HashMap的源代码,并从它们进行散列的方式中获取提示等等。
记住:如果您想要维护一个实际的排序集,哈希表不是您应该使用的。如果您需要始终对其进行排序,则获取一个排序树集;这些树集也是可遍历的。
编辑:包括到这个班的链接,因为我很糟糕,我忘记了
https://stackoverflow.com/questions/20723783
复制相似问题