[英]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
}
}
此外,您可以通过使用不可变的List
和foldRight
以功能方式实现它,而无需使用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
不是堆栈安全的
您必须将该val list_of_list
更改为var list_of_list
。 仅此还不够,因为您还必须将list_of_list
的类型更改为mutable
的替代方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.