In this article, we will learn how to sort a Scala Map by value. We can sort the map by key, from low to high or high to low, using sortBy method.
Syntax:
MapName.toSeq.sortBy(_._2):_*
Let's try to understand it with better example.
Example #1:
// Scala program to sort given map by value
import scala.collection.immutable.ListMap
// Creating object
object GfG
{
// Main method
def main(args:Array[String])
{
// Creating a map
val mapIm = Map("Zash" -> 30,
"Jhavesh" -> 20,
"Charlie" -> 50)
// Sort the map by value
val res = ListMap(mapIm.toSeq.sortBy(_._2):_*)
println(res)
}
}
Output:
Map(Jhavesh -> 20, Zash -> 30, Charlie -> 50)
In above example, we can see mapIm.toSeq.sortBy method is used to sort the map by key values.
Example #2:
// Scala program to sort given map by value
// in ascending order
import scala.collection.immutable.ListMap
// Creating object
object GfG
{
// Main method
def main(args:Array[String])
{
// Creating a map
val mapIm = Map("Zash" -> 30,
"Jhavesh" -> 20,
"Charlie" -> 50)
// Sort map value in ascending order
val res = ListMap(mapIm.toSeq.sortWith(_._2 < _._2):_*)
println(res)
}
}
Output:
Map(Jhavesh -> 20, Zash -> 30, Charlie -> 50)
Here, In above example we are sorting map in ascending order by using mapIm.toSeq.sortWith(_._2 < _._2):_*
Example #3:
// Scala program to sort given map by value
// in descending order
import scala.collection.immutable.ListMap
// Creating object
object GfG
{
// Main method
def main(args:Array[String])
{
// Creating a map
val mapIm = Map("Zash" -> 30,
"Jhavesh" -> 20,
"Charlie" -> 50)
// Sort map value in descending order
val res = ListMap(mapIm.toSeq.sortWith(_._2 > _._2):_*)
println(res)
}
}
Output:
Map(Charlie -> 50, Zash -> 30, Jhavesh -> 20)
Above example show to sorting map in descending order.