【发布时间】:2012-01-24 10:23:15
【问题描述】:
我所说的持久性集合是指 clojure 中的集合。
例如,我有一个包含元素 (a,b,c) 的列表。 对于普通列表,如果我添加 d,我的原始列表将 (a,b,c,d) 作为其元素。 使用持久列表,当我调用 list.add(d) 时,我会返回一个新列表,其中包含 (a,b,c,d)。 但是,该实现尝试尽可能在列表之间共享元素,因此它比简单地返回原始列表的副本更节省内存。 它还具有不可变的优点(如果我持有对原始列表的引用,那么它将始终返回原始的 3 个元素)。
这一切都在其他地方得到了更好的解释(例如http://en.wikipedia.org/wiki/Persistent_data_structure)。
无论如何,我的问题是......提供此功能以供在 java 中使用的最佳库是什么?我可以以某种方式使用 clojure 集合(除了直接使用 clojure)吗?
【问题讨论】:
-
你的意思是类似于 Java 的 LinkedList?我现在明白你的意思了,看看functionaljava.org,它可能对你有帮助。
-
你知道functionjava.org中的副手实现了我上面提到的那种结构吗? (我知道有点厚脸皮,否则我去看看源代码)
-
是我之前的评论 - 是的,但如果可能的话,我宁愿使用 Clojure 的(因为我知道它们是久经沙场的)
标签: java collections clojure functional-programming