У меня есть этот рабочий код, чтобы создать карту между символами в строке и список, содержащий индексы.Что представляет собой более функциональный способ создания карты списка?
scala> "Lollipop".zipWithIndex.foldLeft(Map[Char, List[Int]]())((acc, t) => acc + (t._1 -> (acc.getOrElse(t._1, List[Int]()) :+ t._2)))
res122: scala.collection.immutable.Map[Char,List[Int]] = Map(i -> List(4), L -> List(0), l -> List(2, 3), p -> List(5, 7), o -> List(1, 6))
Но использование acc.getOrElse
выглядит императивом. Есть ли более функциональный способ, который скрывает это от пользователя?
Спасибо! Таким образом, значительная функция преобразования 'List' в' Map' - 'groupBy'. – mparaz