Scala groupBy Identity
Posted July 26, 2022 by Rohith ‐ 1 min read
Scala has different ways to solve a given problem. In this blog, we will discuss using groupBy identity.
groupBy(identity) Usage
groupBy(identity)
is used when we want to map each element in a seq to itself.
Example 1:
val numList: List[Int] = Range(0, 3).toList
val groupByIdentity: Map[Int, List[Int]] = numList.groupBy(identity)
Output
val numList: List[Int] = List(0, 1, 2)
val groupByIdentity: scala.collection.immutable.Map[Int,List[Int]] = HashMap(0 -> List(0), 1 -> List(1), 2 -> List(2))
Example 2:
val numList: List[Int] = Range(0, 3).toList
val groupByIdentity: Map[Int, List[Int]] = (numList ++ numList).groupBy(identity)
Output
val numList: List[Int] = List(0, 1, 2)
val groupByIdentity: scala.collection.immutable.Map[Int,List[Int]] = HashMap(0 -> List(0, 0), 1 -> List(1, 1), 2 -> List(2, 2))
groupBy(identity) in mapReduce
groupBy(identity)
can be a great help in mapReduce
operation.
Extending above Example 2: Let’s find the occurrences of each element in the list.
val numList: List[Int] = Range(0, 3).toList
val groupByIdentity: Map[Int, Int] =
(numList ++ numList)
.groupBy(identity)
.mapValues(_.size)
.toMap
Output
scala.collection.immutable.Map[Int,Int] = Map(0 -> 2, 1 -> 2, 2 -> 2)