Scala集合不一致

Ner*_*vic 5 scala scala-collections

为什么Scala Collections API中的集合和列表之间缺乏一致性?

例如,存在不可变的Set,但也是可变的Set.如果我想使用后者,我可以简单地这样做:

val set = Set[A]()
set += new A
Run Code Online (Sandbox Code Playgroud)

但是,本身没有可变列表.如果我想使用Lists编写类似的代码片段,使用哪种数据结构?LinkedList听起来很好,因为它是可变的,但没有定义+ =方法.ListBuffer似乎满足要求,但它不是一个列表.

阅读2.8 Collections文档后,我得出结论MutableList可能是最合适的.

我仍然希望有scala.collection.mutable.List.

oxb*_*kes 20

这样做的原因是Java已经选择了函数 List类型来表示它不是(即java.util.List不是列表).

函数式编程语言具有可变性 List是没有意义的,因为这种类型是矛盾的.因此ListBufferArrayBuffer.或者只是使用IndexedSeq,其中有可变和不可变的实现


Mar*_*sky 9

SetScala集合库中的序列/列表类似物是Seq.List仅仅是一个特定的,不可改变的实施Seq,因为是Vector.ArrayBuffer或者ListBuffer是典型的实现mutable.Seq.