for遍历list scala_第82讲:Scala中List的ListBuffer是如何实现高效的遍历计算的?

今天学习下list中的ListBuffer实现的高效计算。让我们先来看下代码

def main(args:Array[String]){

val list = List(1,2,3,4,5,6,7,8,9)

increment(list)

increment_MoreEffective(list)

increment_MostEffective(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

result

}

def increment_MostEffective(list:List[Int]) : List[Int]={

import scala.collection.mutable.ListBuffer

var buffer = new ListBuffer[Int]

for(element

buffer.toList

}

首先来看increment方法,该方法定义了一个递归操作,通过列表头和tail的方法进行递归,每次递归都会产生新的调用堆栈。所以,该方法遇到大量的列表数据的时候,需要的内存就会巨量增加。

再来看increment_MoreEffective方法。该方法使用的是列表追加循环操作,该操作每次循环只是进行一个列表的追加,理论上,支持无限多的列表元素。但是,循环中的过程中,每次循环都会产生一个新对像,会产生中间操作和数据,效率上看的话,不太高。

最后我们来看increment_MostEffective方法。该方法使用的是listbuffer,列表缓存,实现元素的遍历操作。该方法只会对一个对像进行操作,即对ListBuffer进行元素的追加等操作。这是最高效最省资源的方法。

分享下更多的scala资源吧:

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark

关注微信账号,获取更多关于scala学习内容

ScalaList是一个不可变的序列类型,这意味着一旦创建了List,就不能对其进行修改。因此,当你想要添加或删除元素时,你需要创建一个新的List,然后用更新后的元素替换旧的List。以下是几种在Scala操作List的基本方法: 添加元素: Scala提供了`::`操作符用于在List头部添加元素。如果你想在List的末尾添加元素,可以使用`:+`方法。同时,`:::`操作符可以用于连接两个List。 ```scala val originalList = List(1, 2, 3) // 在头部添加元素 val listWithNewHead = 0 :: originalList // 在末尾添加元素 val listWithNewTail = originalList :+ 4 // 连接两个List val concatenatedList = List(4, 5, 6) ::: originalList ``` 删除元素: Scala没有直接删除List元素的操作,而是通过过滤方法来实现。可以使用`filter`方法或者`filterNot`方法来创建一个不包含某些元素的新List。 ```scala val originalList = List(1, 2, 3) // 删除某个元素 val listWithoutElement = originalList.filter(_ != 2) // 结果为 List(1, 3) // 删除符合某种条件的元素 val listWithoutNegative = originalList.filter(_ > 0) // 结果为 List(1, 2, 3) ``` 遍历ListScala提供了多种方式遍历List,如使用`foreach`方法,或者通过for表达式。 ```scala val numbers = List(1, 2, 3, 4) // 使用foreach numbers.foreach(println) // 打印每个元素 // 使用for表达式 for (num <- numbers) { println(num) } ``` 这些是Scala List的基础操作,可以根据你的需要来选择合适的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值