使用 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之间有什么不同?最后,事件池会是什么样?我真的很困惑,谢谢帮助我

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

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

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

最新更新