I this tutorial, I am going to show you how to sort a Map using Java 8 features.
Sort a Map using Java8 :
We can sort a map in two ways: Sort by key and value.
Sort by key :
Java8_SortaMap.java
package com.onlinetutorialspoint.java8;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class Java8_SortaMap {
public static void main(String[] args) {
Map<String, Integer> marks = new HashMap<>();
marks.put("Maths", 95);
marks.put("Chemistry", 84);
marks.put("Physics", 92);
marks.put("Languages", 94);
sortByKey(marks);
}
public static void sortByKey(Map<String, Integer> marks) {
Map<String, Integer> sortedMap = new LinkedHashMap<>();
marks.entrySet().stream()
.sorted(Map.Entry.<String, Integer>comparingByKey())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
System.out.println(sortedMap);
}
}
Terminal
{Chemistry=84, Languages=94, Maths=95, Physics=92}
Sort by Value :
Java8_SortaMap.java
package com.onlinetutorialspoint.java8;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class Java8_SortaMap {
public static void main(String[] args) {
Map<String, Integer> marks = new HashMap<>();
marks.put("Maths", 95);
marks.put("Chemistry", 84);
marks.put("Physics", 92);
marks.put("Languages", 94);
sortByValue(marks);
}
public static void sortByValue(Map<String, Integer> marks) {
Map<String, Integer> sortedMap = new LinkedHashMap<>();
marks.entrySet().stream()
.sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
System.out.println(sortedMap);
}
}
Terminal
{Maths=95, Languages=94, Physics=92, Chemistry=84}
Happy Learning 🙂