Подсчет вхождений каждого элемента в List [List [T]] в Scala
Предположим, у вас есть
val docs = List(List("one", "two"), List("two", "three"))
где, например Список («один», «два») представляет собой документ, содержащий термины «один»; и "два", и вы хотите построить карту с частотой документа для каждого термина, то есть в этом случае
Map("one" -> 1, "two" -> 2, "three" -> 1)
Как бы вы сделали это в Scala? (И эффективным способом, предполагая намного больший набор данных.)
Моя первая Java-подобная мысль - использовать изменяемую карту:
val freqs = mutable.Map.empty[String,Int]
for (doc <- docs)
for (term <- doc)
freqs(term) = freqs.getOrElse(term, 0) + 1
который работает достаточно хорошо, но мне интересно, как вы могли бы сделать это в более «функциональном» режиме? Кстати, не прибегая к изменчивой карте?