【发布时间】:2016-01-05 17:46:55
【问题描述】:
我正在尝试使用 java 的 spark,但我被 java 中的不可变集合卡住了。
正如我在 Scala 中所理解的,当两个不可变列表组合在一起时,不会发生深拷贝。然而,java 中可用的不可变列表,如番石榴,是防御性副本。 (如果我错了,请纠正我)
所以我的问题很简单:
- 是否有一些 Java 不可变列表具有与 scala 不可变列表?
- 如果第一个问题的答案是否定的,那是什么 在 java 代码中使用 scala 不可变集合的一般(标准)方法 ?
非常感谢。
【问题讨论】:
-
Guava 集合在修改时不会复制所有数据。它们的实现类似于 Scala 所做的。
-
嗨 Dima,为了做类似 newList = oldList.append(a) 之类的事情,我认为 Guava 不可变列表会将所有数据从 oldList 和 a 复制到 newList,不是吗?或者在什么情况下番石榴可以避开防御副本?谢谢
-
不,这不是真的。就像我说的,guava 的集合实现与 scala 中的类似。
-
@Dima,什么?这是绝对正确的,它与 Scala 的实现不相似。是什么给了你这样的印象?
标签: java scala immutable-collections