¿Cómo ordenar un TreeMap por valor en Java?

En lenguaje Java, un TreeMap siempre almacena pares clave-valor que están ordenados según la clave. TreeMap implementa la interfaz NavigableMap y extiende la clase AbstractMap . TreeMap contiene claves únicas.

Ordenando TreeMap por valor en Java

  • Los elementos en TreeMap se ordenan según las claves.
  • Por lo tanto, necesitamos desarrollar nuestra propia lógica para clasificarlo en función del valor. Podemos hacerlo usando la clase de comparación  .

Ejemplo 1:

Java

// Java program to Sort a TreeMap By Value
  
import java.util.*;
class GFG {
     
    public static <K, V extends Comparable<V> > Map<K, V>
    valueSort(final Map<K, V> map)
    {
        // Static Method with return type Map and
        // extending comparator class which compares values
        // associated with two keys
        Comparator<K> valueComparator = new Comparator<K>() {
            
                  // return comparison results of values of
                  // two keys
                  public int compare(K k1, K k2)
                  {
                      int comp = map.get(k1).compareTo(
                          map.get(k2));
                      if (comp == 0)
                          return 1;
                      else
                          return comp;
                  }
            
              };
        
        // SortedMap created using the comparator
        Map<K, V> sorted = new TreeMap<K, V>(valueComparator);
        
        sorted.putAll(map);
        
        return sorted;
    }
    
    public static void main(String[] args)
    {
        TreeMap<String, Integer> map = new TreeMap<String, Integer>();
  
        // Put elements to the map
        map.put("Anshu", 2);
        map.put("Rajiv", 4);
        map.put("Chhotu", 3);
        map.put("Golu", 5);
        map.put("Sita", 1);
  
        // Calling the method valueSort
        Map sortedMap = valueSort(map);
  
        // Get a set of the entries on the sorted map
        Set set = sortedMap.entrySet();
  
        // Get an iterator
        Iterator i = set.iterator();
  
        // Display elements
        while (i.hasNext()) {
            
            Map.Entry mp = (Map.Entry)i.next();
            System.out.print(mp.getKey() + ": ");
            System.out.println(mp.getValue());
            
        }
    }
}
Producción

Sita: 1
Anshu: 2
Chhotu: 3
Rajiv: 4
Golu: 5

Ejemplo 2:

Java

// Java program to Sort a TreeMap By Value
  
import java.util.*;
  
class GFG {
    // Method for sorting the TreeMap based on values
    public static <K, V extends Comparable<V> > Map<K, V>
    valueSort(final Map<K, V> map)
    {
        // Static Method with return type Map and
        // extending comparator class which compares values
        // associated with two keys
        Comparator<K> valueComparator = new Comparator<K>()
        {
              
            public int compare(K k1, K k2)
            {
  
                int comp = map.get(k1).compareTo(map.get(k2));
  
                if (comp == 0)
                     return 1;
  
                else
                     return comp;
            }
        };
  
        // SortedMap created using the comparator
        Map<K, V> sorted = new TreeMap<K, V>(valueComparator);
  
        sorted.putAll(map);
  
        return sorted;
    }
  
    public static void main(String[] args)
  
    {
  
        TreeMap<Integer, String> map
            = new TreeMap<Integer, String>();
  
        // Put elements to the map
        map.put(1, "Anshu");
  
        map.put(5, "Rajiv");
  
        map.put(3, "Chhotu");
  
        map.put(2, "Golu");
  
        map.put(4, "Sita");
  
        // Calling the method valueSort
        Map sortedMap = valueSort(map);
  
        // Get a set of the entries on the sorted map
        Set set = sortedMap.entrySet();
  
        // Get an iterator
        Iterator i = set.iterator();
  
        while (i.hasNext())
        {
            Map.Entry mp = (Map.Entry)i.next();
  
            System.out.print(mp.getKey() + ": ");
  
            System.out.println(mp.getValue());
        }
    }
}
Producción

1: Anshu
3: Chhotu
2: Golu
5: Rajiv
4: Sita

Publicación traducida automáticamente

Artículo escrito por anshukumarpathak1999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *