我想知道是否有地图的实现:
简而言之,是否存在可以与Hash Maps进行性能比较的功能数据结构?
答案 0 :(得分:4)
Clojure有不可变的地图。 (link)。不确定它正在使用什么底层数据结构。 Clojure源代码将为您提供更多信息!
答案 1 :(得分:3)
Scala也有immutable maps,但它们比哈希表慢。我怀疑你的问题的答案是否定的,你将找不到具有O(1)预期时间插入/查询操作的不可变映射实现。
答案 2 :(得分:1)
无论如何只是为了与人分享,这些是关于使用Tries在Scala中实现持久向量的两个有趣的博客条目。他们还提到了Clojure的实现,以及最近Scala版本中新的IntMap。
http://www.codecommit.com/blog/scala/implementing-persistent-vectors-in-scala http://www.codecommit.com/blog/scala/more-persistent-vectors-performance-analysis
对于这些数据结构,我已经使用key作为整数进行了测试,但还没有使用字符串。因为我的真实应用程序将使用字符串作为键,我不确定实现是否比哈希映射更有效。如果我使用String的HashCode作为键,然后使用Persistent Vector来支持地图怎么办?我将使用32路trie来实现持久向量。我猜碰撞是非常罕见的,只会相应地花费内存。但我不确定复制更新所需的实际金额。
我很快会发布我的结果。
答案 3 :(得分:1)
我还没读过,但我认为有些人认为Purely Functional Data Structures是这类事物的圣经。