Scala中使用ListBuffer高效遍历List

时间:2021-11-14 04:00:55

   在scala中,ListBuffer是可变的,所以可以使用其对List进行遍历操作。ListBuffer在包scala.collection.mutable.ListBuffer中。

1、代码

package com.yy.enhance

/**
 * ListBuffer使用示例
 * 功能:为List中的每个元素加1
 */
case object ListOp{
  //List 遍历、递归
  def increment(list:List[Int]):List[Int] = list match{
    case List() => List()
    case head::tail => head + 1 :: increment(tail)
  }
  
  //方式二
  def increment_MoreEffective(list:List[Int]):List[Int]={
    var result = List[Int]()
    for(element<-list)
       result = result:::List(element+1)
    result
  }
  
  //使用ListBuffer:可变---效率高
  def incrementWithListBuffer(list:List[Int]):List[Int]={
    import scala.collection.mutable.ListBuffer
    var listBuffer = new ListBuffer[Int]
    for(element <- list)
       listBuffer += element +1
    listBuffer.toList
  }
}
object ListBufferTest extends App {
  val list  = List(1,2,3,4,5,6,7,8,9)
  //使用List遍历方法
  println(ListOp.increment(list))
  println(ListOp.increment_MoreEffective(list))
  println(ListOp.incrementWithListBuffer(list))
}

2、结果

List(2, 3, 4, 5, 6, 7, 8, 9, 10)
List(2, 3, 4, 5, 6, 7, 8, 9, 10)
List(2, 3, 4, 5, 6, 7, 8, 9, 10)
 可以看出,结果相同,但是效率是不同的。