To sort a HashMap in ascending order by its keys or values, you can use the TreeMap class, which is a Map implementation that maintains the keys in ascending order.
Here's an example of how you can sort a HashMap in ascending order by its keys in Java:
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
// create a hash map
Map<String, Integer> map = new HashMap<>();
// add key-value pairs to the map
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Orange", 3);
// sort the map by keys using a tree map
Map<String, Integer> sortedMap = new TreeMap<>(map);
// iterate over the sorted map
for (Map.Entry<String, Integer> entry : sortedMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
This code creates a HashMap called map and adds three key-value pairs to it: "Apple" => 1, "Banana" => 2, and "Orange" => 3. It then creates a TreeMap called sortedMap and passes the map as an argument to the constructor. The TreeMap maintains the keys in ascending order, so the key-value pairs will be sorted in ascending order by the keys. Finally, it iterates over the sorted map and prints the key-value pairs.
To sort the HashMap in ascending order by its values, you can use a custom Comparator that compares the values of the entries and sorts them in ascending order. Here's an example of how you can do this:
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// create a hash
HashMap<String, Integer> fruits = new HashMap<>();
fruits.put("Apple", 21);
fruits.put("Banana", 12);
fruits.put("Cherry", 15);
fruits.put("Orange", 35);
fruits.put("Lautturi", 32);
Map<String, Integer> sortedFruits = fruits.entrySet()
.stream()
// .sorted(Map.Entry.comparingByValue()) // sorting in natural/ascending order
// .sorted(Map.Entry.comparingByValue((o1, o2) -> Integer.compare(o1, o2))) // sorting in natural/ascending order
// .sorted(Map.Entry.comparingByValue((o1, o2) -> Integer.compare(o2, o1))) // sorting in reverse/descending order
// .sorted((x, y) -> x.getValue()-y.getValue()) // sorting in natural/ascending order
// .sorted((x, y) -> y.getValue()-x.getValue()) // sorting map/hashmap in reverse/descending order
// .sorted(Map.Entry.comparingByValue(Comparator.naturalOrder())) // sorting hashmap/map in natural/ascending order
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) // sorting map in reverse/descending order
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
System.out.println("original map:" + fruits);
System.out.println("sorted map:" + sortedFruits);
}
}