首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java:用于不可变功能样式数据结构的库

java:用于不可变功能样式数据结构的库
EN

Stack Overflow用户
提问于 2010-06-11 17:57:06
回答 4查看 2.1K关注 0票数 12

这与另一个问题(Java中的功能数据结构)非常相似,但答案并不特别有用。

我需要使用标准Java集合的不变版本(例如,HashMap / TreeMap / ArrayList / LinkedList / HashSet / TreeSet)。所谓“不可变”,我指的是功能意义上的不可变(例如纯功能数据结构),其中对数据结构的更新操作不改变原始数据,而是返回相同类型数据结构的新实例。通常情况下,数据结构的新实例和旧实例将共享不可变数据,以便在时间和空间上高效。

据我所知,我的选择包括:

  • 函数式Java
  • Scala
  • 克洛尔

但我不确定这些是否对我特别有吸引力。我有几项要求/要求:

  • 所讨论的集合应该可以在中直接使用(在类路径中有适当的库)。FJ会为我工作;我不确定是否可以使用Scala或Clojure的数据结构(在Java /o中),必须使用这些语言的编译器/解释器,而w/o必须编写Scala或Clojure代码。
  • 列表/映射/集合上的核心操作应该是可能的,必须使用令人困惑的语法创建函数对象(FJ看起来有点不确定)
  • --它们在时间和空间上应该是有效的。,我正在寻找一个库,它理想地完成了一些性能测试。FJ的TreeMap是建立在一棵红黑树的基础上的,不知道这是怎么回事.
  • 文档/教程应该足够好,这样就可以快速使用数据结构了。 FJ在这方面失败了。

有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-11 18:18:07

在我看来,你已经知道你的选择是什么了,你只是对其中任何一个都不满意。以下是我对你提供的三种选择的看法:

Functional --这个看起来最适合您。它适合您的所有需求,但您不喜欢文档。从我的角度来看,这些文档看起来很基本,但是很有用。他们的代码段应该能让你快速起床和运行。学习曲线似乎几乎不存在,这将有助于缓解缺乏文档。FYI,核心Java的TreeMap也是基于红黑树的.

Scala --如果我处在你的位置上,我会做出这样的选择。您似乎不想学习一种新的语言,但是Scala是一个从Java到Scala的非常简单的转换。一开始,您可以编写非常类似java的代码,并慢慢地采用更多的功能习惯用法。Java <-> Scala互操作在两个方向上都非常出色。

--尽管我非常喜欢Clojure,但由于java开发人员的语法和陡峭的学习曲线,在这个特殊的情况下很难推荐它。

票数 6
EN

Stack Overflow用户

发布于 2013-03-07 12:41:12

票数 1
EN

Stack Overflow用户

发布于 2010-06-11 18:10:13

Scala

您可以从另一种语言中的方法调用任一语言的方法。

http://www.scala-lang.org/faq/4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3025064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档