【发布时间】:2013-04-06 13:16:27
【问题描述】:
也就是说,不可变但通过有效的 O(1) 索引共享数据。
【问题讨论】:
标签: java scala collections clojure immutability
也就是说,不可变但通过有效的 O(1) 索引共享数据。
【问题讨论】:
标签: java scala collections clojure immutability
Karl Krukow 将 clojure 数据结构提取到 standalone library,因此您可以在不将整个 clojure 带入项目的情况下使用它。还有pcollections 具有TreePVector 实现(使用对数时间查找)。
【讨论】:
几年前我为 Java 制作了一个持久性数据结构库,可能符合要求:
https://github.com/mikera/mikera/tree/master/src/main/java/mikera/persistent
它们有点像 Clojure 数据结构,但更多的是 Java 风格:
RepeatList 表示相同值的重复出现)【讨论】:
请记住,Clojure 最终只是 Java。因此,您可以将 Clojure 的 jar 放在您的类路径中并使用它的类。
例如,Clojure 向量是clojure.lang.PersistentVector 的实例,映射是clojure.lang.PersistentArrayMap 的实例,列表是clojure.lang.PersistentList 的实例。
我自己并没有在愤怒中尝试过,但如果我想在 Java 中使用持久性数据结构,我可能会采取这种方式。
这样的事情可以让你开始:
import clojure.lang.PersistentVector;
...
ArrayList list = ...
PersistentVector myVector = PersistentVector.create(list);
// from here on, using myVector takes advantages of its persistent nature.
显然,这些类是在考虑到 Clojure 的 API 的情况下构建的,而不是 Java 的易用性 - 但它肯定是可能的。
【讨论】:
这是一个 Scala -> Java 端口:https://github.com/andrewoma/dexx
【讨论】: