Category Archives: Scala

Scala: groupBy

Definicja metody dla kolekcji scala.collection.immutable.List

def groupBy[K](f: (A) ⇒ K): Map[K, List[A]]

f – funkcja „podziału” na grupy
K – typ kluczy

Przykład: grupowanie listy napisów wg ich długości:

scala> val list = List("ala", "ma", "kota")
list: List[java.lang.String] = List(ala, ma, kota)

scala> list.groupBy(x => x.length)
res0: scala.collection.immutable.Map[Int,List[java.lang.String]]
  = Map(3 -> List(ala), 4 -> List(kota), 2 -> List(ma))

Przykład: grupowanie listy znaków wg ilości wystąpień w danej liście:

scala> val list = List('a', 'b', 'a')
list: List[Char] = List(a, b, a)

scala> list.groupBy(x => list.count(_ == x))
res0: scala.collection.immutable.Map[Int,List[Char]]
  = Map(1 -> List(b), 2 -> List(a, a))