Подсчет вхождений каждого элемента в 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

который работает достаточно хорошо, но мне интересно, как вы могли бы сделать это в более «функциональном» режиме? Кстати, не прибегая к изменчивой карте?

Ответы на вопрос(3)

Ваш ответ на вопрос