JVM的功能/不可变数据结构?[已关闭]

有谁知道Java / JVM数据结构库提供了熟悉的Java数据结构的功能(又名不可变或功能意义上的“持久”)等价物?

通过“函数式”,我的意思是对象本身是不可变的,而对这些对象的修改会在适当的情况下返回与父对象共享相同内部的新对象(为了时间和空间的效率;一个朴素的实现可以在每次写入时复制整个内容)。

就像Java的并发库一样,这似乎不是我自己可以或应该实现的东西,所以有一个我可以在JVM中使用的功能数据结构库会很好。


答案 1

Clojure的不可变和持久化数据结构已被提取为Java库。您可以在 http://github.com/krukow/clj-ds 找到它们。这些数据结构不依赖于 Clojure 运行时,因此可以在没有应用程序类路径的情况下使用。它们已被归纳为可以顺利地与Java代码一起使用。clojure.jar

请注意,在Java中使用这些不可变的数据结构可能不是惯用的。

github 页面没有可供下载的 jar。您必须签出源代码并自己构建jar。


答案 2

尝试使用功能性 Java。它包含不可变的映射、集、列表和树。但是,这个库不仅仅是一个不可变数据结构的集合!