2016-08-08 39 views
0

Ich habe die folgende Liste:wie oft eines der Elemente erscheinen in einer Scala Liste

val list = List("this", "this", "that", "there", "here", "their", "where") 

Ich möchte zählen, wie oft „das“ oder „das“ erscheint. Ich kann etwas tun wie:

list.count(_ == "this") + list.count(_ == "that") 

Gibt es die prägnanteste Art, dies zu tun?

+2

list.count (l => l == " das "|| l ==" das "). Geht das für dich? – Jegan

Antwort

5

Sie können count mehr als ein Vorkommen gleichzeitig. Keine Notwendigkeit, count zweimal aufzurufen.

scala> list.count(x => x == "this" || x == "that") 
res4: Int = 3 
3
scala> list.count(Set("this", "that").contains) 
res12: Int = 3 
  • es ist kürzer
  • es ist ein Pass

Wenn Sie Wörter in mehreren verschiedenen Orten zählen müssen, um die gleiche große Liste:

val m = list.groupBy(identity).mapValues(_.size).withDefaultValue(0) 

geben Ihnen eine handliche Map mit allen zählt, so können Sie

tun
scala> m("this") + m("that") 
res11: Int = 3 
+0

add '' 'nach' this' – ryan

2

Sehr ähnlich Beispiel:

val s = Seq("apple", "oranges", "apple", "banana", "apple", "oranges", "oranges") 

    s.groupBy(identity).mapValues(_.size) 

und das Ergebnis ist

Map(banana -> 1, oranges -> 3, apple -> 3) 

Und für bestimmte Artikel:

s.groupBy(identity).mapValues(_.size)("apple") 
Verwandte Themen