<分区>
这与另一个问题 (Functional Data Structures in Java) 非常相似,但那里的答案并不是特别有用。
我需要使用标准 Java 集合的不可变版本(例如 HashMap/TreeMap/ArrayList/LinkedList/HashSet/TreeSet)。 “不可变”是指功能意义上的不可变(例如 purely functional data structures ),其中对数据结构的更新操作不会更改原始数据,而是返回同类数据结构的新实例。此外,数据结构的新旧实例通常也会共享不可变数据,以提高时间和空间效率。
据我所知,我的选择包括:
但我不确定这些是否对我特别有吸引力。我有一些要求/愿望:
有问题的集合应该可以直接在 Java 中使用(类路径中有适当的库)。 FJ 会为我工作;我不确定我是否可以在 Java 中使用 Scala 或 Clojure 的数据结构,而不必使用这些语言的编译器/解释器,也不必编写 Scala 或 Clojure 代码。
列表/映射/集合的核心操作应该是可能的,而不必创建语法困惑的函数对象(FJ 看起来有点不确定)
它们在时间和空间上应该是高效的。我正在寻找一个理想情况下已经完成一些性能测试的库。 FJ的TreeMap是基于红黑树的,不知道怎么评价。
文档/教程应该足够好,以便有人可以快速开始使用数据结构。FJ 在这方面失败了。
有什么建议吗?