Scala 如何在字符串数组中添加空括号
给定 然后 使用Scala 如何在字符串数组中添加空括号,scala,Scala,给定 然后 使用Json.toJson序列化到 val pp = ss.toArray.groupBy(_._2).toSeq.sortBy(_._1).toList.map(f => { f._2.map { case (x, y, z) => if (z == "r") { // when z == "s" || z =="p" empty bracket will be added s"
Json.toJson
序列化到
val pp = ss.toArray.groupBy(_._2).toSeq.sortBy(_._1).toList.map(f => {
f._2.map {
case (x, y, z) => if (z == "r") { // when z == "s" || z =="p" empty bracket will be added
s"$x,$y,$z"
} else {
""
}
}
})
但是JSON输出应该是这样的
[
[
"1,2,r",
"2,2,r"
],
[
"1,3,r"
],
[""],
[""]
]
您可以使用
flatMap
+选项
,如下所示
val ss=List((1,2,“r”),(2,2,“r”),(1,4,“r”),(1,5,“p”),(1,6,“s”))
val pp=ss
.groupBy(u.u 2)
托塞克先生
.sortBy(u.u 1)
.map(u._2.flatMap{
如果z==“r”=>
期权(s“$x,$y,$z”)
案例=>
没有一个
})
println(pp)
您可以使用
flatMap
+选项
,如下所示
val ss=List((1,2,“r”),(2,2,“r”),(1,4,“r”),(1,5,“p”),(1,6,“s”))
val pp=ss
.groupBy(u.u 2)
托塞克先生
.sortBy(u.u 1)
.map(u._2.flatMap{
如果z==“r”=>
期权(s“$x,$y,$z”)
案例=>
没有一个
})
println(pp)
简单的解决方案是在内部代码中使用
collect
而不是map
。您还可以在不更改逻辑的情况下删除某些类型转换:
List(List(1,2,r, 2,2,r), List(1,4,r), List(), List())
如果希望
Array[Array[String]]
(如注释中所建议),请执行以下操作:
简单的解决方案是在内部代码中使用
collect
而不是map
。您还可以在不更改逻辑的情况下删除某些类型转换:
List(List(1,2,r, 2,2,r), List(1,4,r), List(), List())
如果希望
Array[Array[String]]
(如注释中所建议),请执行以下操作:
注意空
列表
ss.groupBy(_._2).toArray.sortBy(_._1).map {
_._2.toArray.collect {
case (x, y, z) if z == "r" =>
s"$x,$y,$z"
}
}
以及恰好为空的一个元素的列表
scala> List.empty[String]
val res0: List[String] = List()
scala> .length
val res1: Int = 0
也许更清楚地看到空字符串“
表示这样的实际值
scala> List("")
val res2: List[String] = List("")
scala> .length
val res3: Int = 1
注意空
列表
ss.groupBy(_._2).toArray.sortBy(_._1).map {
_._2.toArray.collect {
case (x, y, z) if z == "r" =>
s"$x,$y,$z"
}
}
以及恰好为空的一个元素的列表
scala> List.empty[String]
val res0: List[String] = List()
scala> .length
val res1: Int = 0
也许更清楚地看到空字符串“
表示这样的实际值
scala> List("")
val res2: List[String] = List("")
scala> .length
val res3: Int = 1
谢谢,因为答案已经尝试了你的代码,我得到的pp是seq[List[String]],我想要数组[Array[String]]中的答案。因此,我将pp转换为这个数组[Array[String]]。但是,只添加了一个空括号,没有添加第二个括号。Json.toJson(Array[Array[String]]@varsha
Array
是一种Java类型而不是Scala类型,因此Scala代码通常会使用List
或Vector
来处理这类事情。好的,但是你能告诉我为什么只添加了一个空括号,而不是列表中的第二个括号吗?谢谢你的回答,我已经尝试了你的代码,我得到的pp是seq[List[String]],我想要数组[Array[String]]中的答案。因此,我将pp转换为这个数组[Array[String]]。但是,只添加了一个空括号,没有添加第二个括号。Json.toJson(Array[Array[String]]@varshaArray
是一种Java类型而不是Scala类型,因此Scala代码通常会使用List
或Vector
来处理这类事情。好的,但是你能告诉我为什么只添加了一个空括号,而不是列表中的第二个括号吗。