Joh*_*ood 8 buffer scala list equals
scala> import scala.collection.mutable.Buffer
import scala.collection.mutable.Buffer
scala> val b = Buffer(1, 2, 3)
b: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3)
scala> val l = List(1, 2, 3)
l: List[Int] = List(1, 2, 3)
scala> b == l
res1: Boolean = true
Run Code Online (Sandbox Code Playgroud)
我在想,为什么可以将Buffer和List对象与true结果进行比较?
我一直认为,因为他们来自不同的阶层,所以在比较时他们必须是假的.有人可以解释一下,为什么这样实现?
Ixx*_*Ixx 17
来自http://www.scala-lang.org/docu/files/collections-api/collections_41.html
集合库具有统一的平等和散列方法.首先,我们的想法是将集合划分为集合,映射和序列.不同类别的馆藏总是不相等.例如,Set(1,2,3)不等于List(1,2,3),即使它们包含相同的元素.另一方面,在同一类别中,集合是相等的,当且仅当它们具有相同的元素时(对于序列:同一元素中的相同元素).例如,List(1,2,3)== Vector(1,2,3)和HashSet(1,2)== Treeset(2,1).
对于等式检查,集合是可变的还是不可变的并不重要.(......)
所以这是因为scala.collection.mutable.Buffer和List属于同一类别(序列),然后将相等定义为具有相同的元素.