如何在for循环中将元素追加到列表中:Scala

时间:2018-09-20 13:12:15

标签: scala

我想根据条件将元素列表追加到另一个列表。例如:找到下面的代码。

package test

object main {
 def main(args: Array[String]): Unit ={
   val a = List(1,2,3,4,5)
   val b= List[Int]()
   for(x <- a){
     if (x>3){
       b:+x
     }
   }
   println(b)
 }
}

执行此操作时,我会得到一个空列表。

3 个答案:

答案 0 :(得分:5)

List类在Scala中是不可变的,因此您不能向其中添加元素。如果确实需要可变列表,可以使用MutableList

val a = List(1,2,3,4,5)
val b= MutableList[Int]()
for (x <- a) {
  if (x > 3) {
    b += x
  }
}
println(b)

但是,在像Scala这样的功能语言中,最佳实践是使用不可变的集合。使用filter方法可以很容易地完成您的任务。

val a = List(1,2,3,4,5)
val b = a.filter(_ > 3)

答案 1 :(得分:2)

在Scala列表中,是一个不可变的集合,您不能将其添加到其中,但是可以通过应用过滤器来创建另一个集合:

to_representation()

答案 2 :(得分:0)

实际上,要使其更加通用,可以使用制表法将所需的n预先填充到列表中; 示例:

val n = 5
List.tabulate(5)(_ + 1).filter(_ > 3)