如何使用scala在向量中找到单词count?

时间:2014-10-08 04:49:25

标签: scala

我想在向量中使用单词count,例如,

我的矢量是:

Vector(pen, pencil, pen pencil)
Vector(pencil, book, eraser, pencil book, pencil eraser, book eraser, pencil book eraser)
Vector(pen, pencil, book, pen pencil, pen book, pencil book, pen pencil book)

我希望计数为,

(pen,2)
(pencil,3)
(pen pencil,2)
(book,2)
(eraser,1)
(pencil book,2)
(pencil eraser,1)
(book eraser,1)
(pencil book eraser,1)
(pen book,1)
(pen pencil book,1)

1 个答案:

答案 0 :(得分:3)

这是一个快速解决方案(可能不是最有效的,如果这是一个问题):

val v1 = Vector("pen", "pencil", "pen pencil")
val v2 = Vector("pencil", "book", "eraser", "pencil book", "pencil eraser", "book eraser", "pencil book eraser")
val v3 = Vector("pen", "pencil", "book", "pen pencil", "pen book", "pencil book", "pen pencil book")

(v1 ++ v2 ++ v3).groupBy(v => v).mapValues(_.size)

res1: scala.collection.immutable.Map[String,Int] = Map(pencil book eraser -> 1, pencil eraser -> 1, eraser -> 1, book eraser -> 1, pen pencil -> 2, book -> 2, pen pencil book -> 1, pencil -> 3, pen -> 2, pen book -> 1, pencil book -> 2)