首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可变映射使用哪种数据结构?

不可变映射使用哪种数据结构?
EN

Stack Overflow用户
提问于 2012-01-30 00:05:23
回答 2查看 1.7K关注 0票数 15

我知道普通的可变映射是如何工作的(使用哈希表),我知道不可变列表是如何工作的(递归链表),以及它们相对于可变列表的优势(不会弄乱原始的常量时间追加),但是不可变映射(例如Scala的)是如何工作的呢?

我知道在生成新映射时不干扰原始映射的优势,但是底层数据结构是如何工作的,以及它们具有什么样的性能特征,例如,与可变哈希表相比?有没有人们用来实现这些的标准数据结构,我可以去CLRS/wikipedia上查一下?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-30 00:22:22

持久哈希映射是使用一种称为的结构实现的。这是originally proposed by Phil Bagwell (他是EPFL的Scala小组的成员),但实际上是由Clojure首先实现的。2010年,当2.8问世时,它冲击了scala。

Dan Spiewak写了一个great talk on functional data structures,其中非常清晰地解释了散列trie的机制(以及银行家队列等其他东西)!他还在谈话中很好地解释了渐近的big-O性能。

去年10月,Phil在London scala Lift Off上做了另一次演讲,这一次是关于并行持久数据结构。

持久排序映射是通过 tree实现的

票数 19
EN

Stack Overflow用户

发布于 2012-01-30 00:13:32

它可以是树(红-黑)或散列映射。它们的访问特性取决于底层实现。对于读访问,树是O(log );散列映射是O(1)。

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

https://stackoverflow.com/questions/9054561

复制
相关文章

相似问题

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