Java program to Sort a TreeMap By Value

PHOTO EMBED

Wed Nov 22 2023 14:52:10 GMT+0000 (Coordinated Universal Time)

Saved by @fastoch #java

/*
 * Une collection TreeMap est par défaut triée avec ses clés, mais si vous avez besoin de trier une TreeMap
 * par valeurs, Java fournit un moyen en utilisant la classe Comparator.
 */

package TreeMap;

import java.util.*;

/**
 *
 * @author fabrice
 */
class Tri_par_valeurs {
  
  // Static method which return type is Map and which extends Comparable. 
  // Comparable is a comparator class which compares values associated with two keys.  
  public static <K, V extends Comparable<V>> Map<K, V> valueSort(final Map<K, V> map) {
      
      // compare the values of two keys and return the result
      Comparator<K> valueComparator = (K k1, K k2) -> {
          int comparisonResult = map.get(k1).compareTo(map.get(k2));
          if (comparisonResult == 0) return 1;
          else return comparisonResult;
      };
      
      // Sorted Map created using the comparator
      Map<K, V> sorted = new TreeMap<K, V>(valueComparator); // create a new empty TreeMap ordered according to the given comparator
      
      sorted.putAll(map); // copy mappîngs of "map" into "sorted" an order them by value
      
      return sorted;
  }
  
    public static void main(String[] args) {
        TreeMap<Integer, String> map = new TreeMap<Integer, String>();
        
        // Feed the Map
        map.put(1, "Anshu"); 
        map.put(5, "Rajiv"); 
        map.put(3, "Chhotu"); 
        map.put(2, "Golu"); 
        map.put(4, "Sita"); 
        
        // Display elements before sorting 
        Set unsortedSet = map.entrySet();
        Iterator i1 = unsortedSet.iterator();
        while (i1.hasNext()) {
            Map.Entry mapEntry = (Map.Entry) i1.next();
            System.out.println("Key: " + mapEntry.getKey() + " - Value: " + mapEntry.getValue());
        }
        
        // call method valueSort() and assign the output to sortedMap
        Map sortedMap = valueSort(map);
        System.out.println(sortedMap);
        
        // Display elements after sorting 
        Set sortedSet = sortedMap.entrySet();
        Iterator i2 = sortedSet.iterator();
        while (i2.hasNext()) {
            Map.Entry mapEntry = (Map.Entry) i2.next();
            System.out.println("Key: " + mapEntry.getKey() + " - Value: " + mapEntry.getValue());
        }
    }
}
content_copyCOPY

https://www.geeksforgeeks.org/how-to-sort-a-treemap-by-value-in-java/