也就是说,这是一个不可变的数据结构,但它可以通过 O(1) 索引实现数据共享。
Karl Krukow将Clojure数据结构提取到独立库中,因此您可以在项目中使用它,而无需引入整个Clojure。还有pcollections,其中包含TreePVector实现(具有对数时间查找)。
https://github.com/mikera/mikera/tree/master/src/main/java/mikera/persistent
它们有点像Clojure数据结构,但更适合Java:
RepeatList
用于相同值的重复出现)clojure.lang.PersistentVector
的实例,映射是 clojure.lang.PersistentArrayMap
的实例,而列表是 clojure.lang.PersistentList
的实例。import clojure.lang.PersistentVector;
...
ArrayList list = ...
PersistentVector myVector = PersistentVector.create(list);
// from here on, using myVector takes advantages of its persistent nature.