首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >像堆栈一样引入数据,像哈希表一样存储在存储桶中的数据结构?

像堆栈一样引入数据,像哈希表一样存储在存储桶中的数据结构?
EN

Stack Overflow用户
提问于 2010-08-27 23:28:12
回答 4查看 125关注 0票数 0

我需要一种像栈一样引入数据的算法,这样当我扫描结构时,我可以按引入时的相同顺序读取它们,以便顺序访问。此外,这些值存储在存储桶中,就像哈希表一样,因此我可以将整个结构分成碎片进行磁盘存储,并具有快速的随机访问。

有没有这样的算法,或者我应该有两个独立的结构?最好的策略是什么?

诚挚的问候!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-27 23:33:22

我可能会这样做:

  1. 创建一个哈希表,在其中实际存储条目。
  2. 创建一个堆栈,用于存储对象的真实内存位置(而不是位于类(或类似结构)后面的这两个结构的对象),以便对用户隐藏其真正的实现。
票数 2
EN

Stack Overflow用户

发布于 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接口和两个实现:LinkedMapListOrderedMap

如果你稍微小心一点,你应该能够保持一个无序映射的渐近复杂性保证。

票数 1
EN

Stack Overflow用户

发布于 2010-08-27 23:35:10

首先,我想你的意思是“像队列一样引入数据”。堆栈将以与输入相反的顺序返回数据。(而且,我不太确定您所说的“引入数据”是什么意思-我不确定这是一个语言问题,还是一个我从未听说过的数据结构表达式)。

我的建议是使用侵入式链表(链接存储在数据对象中)来创建线性列表。然后,您可以将数据对象(附加了链接)放入哈希表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3585707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档