Приведенная ниже реализация является общей и не зависит от количества параметров, которые вы получаете во время выполнения.
val line = "Mon-18-June-2018,1:10:5,2:20:10,3:30:15,4:40:20,5:50:25"
val arr = line.split(",")
val map = scala.collection.mutable.Map[String,List[List[Int]]]()
val key = arr(0)
val values = arr.toList.drop(1).map{
case str : String =>
str.split(":").map(_.toInt).foldLeft(List[Int]())(
(acc,res) =>
acc :+ res
)
}
map += (key -> values)
Это даст вам вывод как
res0: scala.collection.mutable.Map[String,List[List[Int]]] = Map(Mon-18-June-2018 -> List(List(1, 10, 5), List(2, 20, 10), List(3, 30, 15), List(4, 40, 20), List(5, 50, 25)))
Однако, если вы уверены, что вы всегда получите параметры в формате 1: 10: 2, вы можете сразу получить реализацию кортежа вместо свертывания по спискам.
val line = "Mon-18-June-2018,1:10:5,2:20:10,3:30:15,4:40:20,5:50:25"
val arr = line.split(",")
val map = scala.collection.mutable.Map[String,List[(Int,Int,Int)]]()
val key = arr(0)
val values = arr.toList.drop(1).map{
case str : String =>
str.split(":").map(_.toInt).foldLeft(List[Int]())(
(acc,res) =>
acc :+ res
)
}.map(x => (x(0),x(1),x(2)))
map += (key -> values)
Получает вывод как
res0: scala.collection.mutable.Map[String,List[(Int, Int, Int)]] = Map(Mon-18-June-2018 -> List((1,10,5), (2,20,10), (3,30,15), (4,40,20), (5,50,25)))