我需要一种像栈一样引入数据的算法,这样当我扫描结构时,我可以按引入时的相同顺序读取它们,以便顺序访问。此外,这些值存储在存储桶中,就像哈希表一样,因此我可以将整个结构分成碎片进行磁盘存储,并具有快速的随机访问。
有没有这样的算法,或者我应该有两个独立的结构?最好的策略是什么?
诚挚的问候!
发布于 2010-08-27 23:33:22
我可能会这样做:
发布于 2010-08-28 00:22:08
这就像一个有序的映射,对吧?这些通常是通过将链表与您想要用来实现映射的任何东西(例如哈希表)相结合来实现的。
在Ruby1.9中,Hash
类的规范(令人困惑的是Ruby拼写“Map”的方式)发生了变化,从而保持了插入顺序。据我所知,大多数Ruby1.9实现都将其实现为列表和哈希表的某种组合。Rubinius的实现特别容易阅读,因为它是100%用Ruby:kernel/common/hash.rb
编写的。
Java有一个有序映射的实现,称为LinkedHashMap
。这是来自Oracle OpenJDK 7的源代码:/share/classes/java/util/LinkedHashMap.java
Apache Commons Collections有一个OrderedMap
接口和两个实现:LinkedMap
和ListOrderedMap
。
如果你稍微小心一点,你应该能够保持一个无序映射的渐近复杂性保证。
发布于 2010-08-27 23:35:10
首先,我想你的意思是“像队列一样引入数据”。堆栈将以与输入相反的顺序返回数据。(而且,我不太确定您所说的“引入数据”是什么意思-我不确定这是一个语言问题,还是一个我从未听说过的数据结构表达式)。
我的建议是使用侵入式链表(链接存储在数据对象中)来创建线性列表。然后,您可以将数据对象(附加了链接)放入哈希表。
https://stackoverflow.com/questions/3585707
复制相似问题