【发布时间】:2010-06-11 17:57:06
【问题描述】:
这与另一个问题 (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 在这方面失败了。
有什么建议吗?
【问题讨论】:
标签: java data-structures functional-programming