【发布时间】:2015-09-13 14:34:54
【问题描述】:
通过增量修改来构建一个 scala 列表。什么是最有效的“添加”运算符?在 CPU 和资源消耗方面。
例如,我们想从 List(1,2,3) 创建一个由连续数字组成的元组列表。结果是: List((1,2), (2,3))
方法 1 - 使用 :+ 运算符
def createConsecutiveNumPair1[T](inList: List[T]) : List[(T, T)] = {
var listResult = List[(T, T)]()
var prev = inList(0)
for (curr <- inList.tail)
{
listResult = listResult :+ (prev, curr)
prev = curr
}
listResult
}
方法 2 - 使用 ::= 运算符
def createConsecutiveNumPair2[T](inList: List[T]) : List[(T, T)] = {
var listResult = List[(T, T)]()
var prev = inList(0)
for (curr <- inList.tail)
{
listResult ::= (prev, curr)
prev = curr
}
listResult
}
测试
scala> val l1 = List(1,2,3)
l1: List[Int] = List(1, 2, 3)
scala> createConsecutiveNumPair1(l1)
res77: List[(Int, Int)] = List((1,2), (2,3))
scala> createConsecutiveNumPair2(l1)
res78: List[(Int, Int)] = List((2,3), (1,2))
问题:哪个算子的CPU、资源消耗最低?如果您能提出一种更好的 scala 方法来重写上述方法,也将不胜感激。
【问题讨论】:
标签: scala