使用scala时,Array和Buffer之间的区别是什么?

时间:2017-03-03 08:09:44

标签: scala

当我使用scala处理某些任务时,我写了一些代码如下:

object He {
  def main(args: Array[String]): Unit = {
    var myMatrix = Array.ofDim[String](3,3)
    // build a matrix
    for (i <- 0 to 1) {
      for ( j <- 0 to 1) {
        myMatrix(i)(j) = "faf";
      }
    }
    var eventbuffer = for(i <- myMatrix) yield for(j <- i) yield j
    var eventArray =  for(i <- eventbuffer) yield i.toArray
    var eventpool:Array[(String, Array[String])] =   eventArray.toArray.map(son => (son(0), son))
  }
}

我想问一下问题,eventbuffer和eventArray之间的区别是什么?最后,eventpool会是什么样的?我真的很困惑,谢谢 帮助我

1 个答案:

答案 0 :(得分:8)

在Scala中,Array只是一个JVM数组,而各种Buffer是实际的类。

Array[String]与Java中的String[]相同。 您可以将ArrayBuffer视为Java中的ArrayList(它们非常相似,但不相同),将ListBuffer视为Java LinkedList(同样,类似) ,但不一样)。

然而,应该注意,在您的示例中eventbuffer不是Buffer,而是数组数组。实际上它几乎是myMatrix的精确副本,因此调用toArray方法实际上是多余的。