【发布时间】:2014-09-22 09:15:47
【问题描述】:
最近,我需要在 clojure 中实现一个特殊的集合,它可能有重复的元素(即多重集合),比如
#{1 2 3 4 1 2}
此外,还需要在 O(1) 时间内删除等于指定值的任意元素。例如,当我输入
(my-remove #{1 1 2 2 3 4} 2)
它应该返回#{1 1 2 3 4} 而不循环整个集合(或向量)。
我的问题是,clojure 中是否有满足这两个属性的内置数据结构。如果没有,是否有任何适当的替代解决方案来实现这一点?谢谢!
【问题讨论】:
-
Clojure 缺少标准的 multiset/bag。你可以试试this - 未经测试。