Scala Examples - Sorting Lists and other Collections in Scala
Last updated:Lists (and other collections) are probably the most important things you'll deal with when programming with functional programming languages, and sorting is one of the most common operations on them. Here are some examples:
Using sorted
List(3,2,5,4,5).sorted
//List(2,3,4,5,5)
List("foo", "bar", "baz").sorted
//List("bar","baz","foo")
Using sortBy
to specify the order criteria
// (Int,String) pairs
val p1 = (5,"foo")
val p2 = (19,"bar")
val p3 = (12,"baz")
val p4 = (5,"quux")
val list = List(p1,p2,p3,p4)
list.sortBy( el => (el._1,el._2))) //use the first element then the second
//List((5,foo), (5,qux), (12,baz), (19,bar))
list.sortBy(_._2) //sort list using only the second element (the string)
//List((19,bar), (12,baz), (5,foo), (5,qux))
Totally custom ordering with orderWith
You provide a custom function (A,A) => Boolean
(where A
is the list type) that takes two parameters and returns true
if the first one should come before the second one, and false
otherwise:
//same pairs as before
val t1 = (5, "foo")
val t2 = (19, "bar")
val t3 = (12, "baz")
val t4 = (5, "qux")
//a custom ordering function that always puts pairs whose
//second elements are words starting with "b" before others
List(t1, t2, t3, t4).sortWith((a, b) => {
if (a._2.startsWith("b")) true
else false
})
//List((12,baz), (19,bar), (5,foo), (5,qux))