ScalaでfoldLeftを使ってみる

foldLeftを使ってみる

foldLeft使用の覚書

list内の単語の集計を行って降順にする

これだけでリスト内の単語の集計とソートが行える

val countWordsList = List("a", "b", "c", "a", "d", "b", "e", "b")
val wordAggregate = countWordsList.foldLeft(Map[String, Int]().withDefaultValue(0)){
  (map, key) => map + (key -> (map(key) + 1))
}.toSeq.sortBy(_._2).reverse
println(wordAggregate)

文字列の置換を行う

val replaceMap = Map("{$1}" -> "health", "{$2}" -> "wealth")
val beforeText = "{$1} is better than {$2}"
val afterText = replaceMap.foldLeft(beforeText){ (tex, map) => tex.replace(map._1, map._2) }
println(afterText)