我从服务获得了CSV响应,我想生成一个案例类列表。例如:
case class MyCaseClass(e1: String, e2: String, e3: String)
val body = getLargeCsvFromServiceOrSomething()
val elements = body.split(",")
现在我有一个Array[String]
。我想把这个大数组分解成3个元素的chuck,所以我可以生成我的List[MyCaseClass]
,其中每个实例从数组中取出3个元素。有没有类似于splitAt
的方法,但是每个n个元素都会吐出来?我确信我能做到这一点,但它不会来找我。
答案 0 :(得分:4)
你想要的是grouped
:
scala> List(1,2,3,4,5,6,7).grouped(3).toList
res0: List[List[Int]] = List(List(1, 2, 3), List(4, 5, 6), List(7))
所以你的事情可能就像:
val elements = Array("a","b","c","d","e","f")
val classes = elements.grouped(3).map{ case Array(a,b,c) => MyCaseClass(a,b,c) }
println(classes.toList) // List(MyCaseClass(a,b,c), MyCaseClass(d,e,f))