繁体   English   中英

将元素附加到 scala 中的列表列表

[英]appending elements to list of list in scala

我创建了一个空的 scala 可变列表

import scala.collection.mutable.ListBuffer
val list_of_list : List[List[String]] = List.empty

我想 append 元素如下

filtered_df.collect.map(
          r => {

            val val_list = List(r(0).toString,r(4).toString,r(5).toString)
            list_of_list += val_list
          }
        )

我得到的错误是

Error:(113, 26) value += is not a member of List[List[String]]
  Expression does not convert to assignment because receiver is not assignable.
            list_of_list += val_list

有人可以帮忙吗

您的声明似乎是错误的:

val list_of_list : List[List[String]] = List.empty

表示您已声明scala.collection.immutable.List其操作返回一个新列表而不更改当前列表。

要修复错误,您需要将外部List类型更改为您在声明上方导入的ListBuffer ,如下所示:

val list_of_list : ListBuffer[List[String]] = ListBuffer.empty

此外,除非您想修改从DataFrame map因此您可以将其更改为foreach

filtered_df.collect.foreach {
  r => {
    val val_list = List(r(0).toString,r(4).toString,r(5).toString)
    list_of_list += val_list
  }
}

此外,您可以通过使用不可变的ListfoldRight以功能方式实现它,而无需使用ListBuffer ,如下所示:

val list_of_list: List[List[String]] = 
  filtered_df.collect.toList
    .foldRight(List.empty[List[String]])((r, acc) => List(r(0).toString,r(4).toString,r(5).toString) :: acc)

toList用于在调用foldRight时实现堆栈安全,因为它对于Arrays不是堆栈安全的

有关foldLeftfoldRight更多信息

您必须将该val list_of_list更改为var list_of_list 仅此还不够,因为您还必须将list_of_list的类型更改为mutable的替代方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM