Groovy - Map toSorted(Closure condition) method
Description
Groovy Map toSorted(Closure condition) method sorts the elements of given map using supplied closure as a comparator to determine the ordering. Original map is unaffected.
Syntax
public Map toSorted(Closure condition)
Parameters
condition − closure to compare Map entries
Return Value
Sorted map.
Example - Getting Sorted Map of String and String
Following is an example of the usage of this method −
main.groovy
// define a map
def map = ["A" : "Apple","P":"Peach","C": "Carrot","B" : "Banana"]
// get the sorted map
def result = map.toSorted{a, b -> a.value <=> b.value }
// print map
print(result)
Output
When we run the above program, we will get the following result −
[A:Apple, B:Banana, C:Carrot, P:Peach]
Example - Getting Sorted Map of Integer and Integer
Following is an example of the usage of this method −
main.groovy
// define a map
def map = [3 : 13, 4: 14, 1: 11, 2 : 12, 5: 15]
// get the sorted map
def result = map.toSorted{a, b -> a.value <=> b.value }
// print map
print(result)
Output
When we run the above program, we will get the following result −
[1:11, 2:12, 3:13, 4:14, 5:15]
Example - Getting Sorted Map of Integer and Integer
Following is an example of the usage of this method −
main.groovy
// define a map
def map = [2 : new Student(2, "Robert"), 1 : new Student(1, "Julie"), 3: new Student(3,"Adam")]
// get the sorted map
def result = map.toSorted{a, b -> a.value.getName() <=> b.value.getName() }
// print map
print(result)
class Student {
int rollNo;
String name;
Student(int rollNo, String name){
this.rollNo = rollNo;
this.name = name;
}
@Override
public boolean equals(Object obj) {
Student s = (Student)obj;
return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
}
@Override
public String toString() {
return "[ " + this.rollNo + ", " + this.name + " ]";
}
}
Output
When we run the above program, we will get the following result −
[3:[ 3, Adam ], 1:[ 1, Julie ], 2:[ 2, Robert ]]
groovy_maps.htm
Advertisements