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 🙂