java Guava和Scala之间不可变列表的连接差异

时间:2016-01-05 09:26:28

标签: java scala immutable-collections

我正在尝试使用java的火花,我被Java中的不可变集合所困扰。

正如我在Scala中理解的那样,当两个不可变列表组合在一起时,不会发生深层复制。但是,java中可用的不可变列表,如番石榴,是防御性副本。 (如果我错了,请纠正我)

所以我的问题就是:

  1. 是否有一些Java不可变列表具有与之相同的行为 scala不可变列表?
  2. 如果第一个问题的答案是否定的,那是什么 在java代码中使用scala immutable集合的一般(标准)方法 ?
  3. 非常感谢。

1 个答案:

答案 0 :(得分:3)

Scala Lists是一个所谓的持久性集合,持久性地指的是没有防御性复制发生的事实。如果你谷歌搜索Java persistent collection,你应该找到几个链接来帮助你入门。除此之外,还有许多库旨在将函数式编程的本质带入Java。由于持久性集合本质上是功能性的,因此这些框架通常包括它们自己的集合实现。我与之合作并可以推荐的两个图书馆是JavaslangFunctional Java,但除此之外还有更多(例如pccollectionsjOOλ,...)

至于使用Java的Scala集合,我总觉得这有点尴尬。我建议编写一个Scala类/对象,它可以让您轻松(从Java开始)访问scala.collection.JavaConverters,这样您就可以将scala.collection.immutable.List公开为java.util.List并使用该界面。