Ordenar LinkedHashMap por valores usando una interfaz comparable en Java

LinkedHashMap es como HashMap con una característica adicional de mantener un orden de elementos insertados en él. Suponiendo que haya pasado por LinkedHashMap en Java y conozca LinkedHashMap. 

Sintaxis:

int compare(T obj) ;

Ilustración:

Input  : { GEEKS=1, geeks=3, for=2 }
Output : { GEEKS=1, for=2, geeks=3 }

Input  : { 101 = 2, 102 = 9, 103 = 1, 105 = 7 }
Output : { 103 = 1, 101 = 2, 105 = 7, 102 = 9 }

Método:  al usar la interfaz Comparable para ordenar LinkedHashMap por valor, esta interfaz impone un orden total en los objetos de cada clase que la implementa. Esta ordenación se conoce como la ordenación natural de la clase y el método de comparación de la clase se conoce como su método de comparación natural.

Implementación:

Ejemplo 

Java

// Java program to sort the values of LinkedHashMap
  
// Importing required classes from
// java.util package
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.*;
  
// Class 
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Creating an LinkedHashMap object
        LinkedHashMap<String, Integer> l_map
            = new LinkedHashMap<String, Integer>();
  
        // Adding element to LinkedHashSet
        // Custom inputs
        l_map.put("Computer", 1);
        l_map.put("Science", 3);
        l_map.put("Portal", 2);
  
        // Display message
        System.out.print(
            "LinkedHashMap without sorting : ");
  
        // Print the elements of Map in above object
        // just after addition without sorting
        System.out.println(l_map);
  
        // Convert key-value from the LinkedHashMap to List
        // using entryset() method
        List<Map.Entry<String, Integer> > list
            = new ArrayList<Map.Entry<String, Integer> >(
                l_map.entrySet());
  
        // Comparable Interface function to
        // sort the values of List
        Collections.sort(
            list,
            new Comparator<Map.Entry<String, Integer> >() {
                // Comparing entries
                public int compare(
                    Entry<String, Integer> entry1,
                    Entry<String, Integer> entry2)
                {
                    return entry1.getValue()
                        - entry2.getValue();
                }
            });
  
        // Clear the above LinkedHashMap
        // using clear() method
        l_map.clear();
  
        // Iterating over elements using for each loop
        for (Map.Entry<String, Integer> entry : list) {
  
            // Put all sorted value back to the
            // LinkedHashMap
            l_map.put(entry.getKey(), entry.getValue());
        }
  
        // Display and print
        // the sorted value of LinkedHashMap
        System.out.println(
            "LinkedHashMap after sorting   : " + l_map);
    }
}
Producción

LinkedHashMap without sorting : {Computer=1, Science=3, Portal=2}
LinkedHashMap after sorting   : {Computer=1, Portal=2, Science=3}

Publicación traducida automáticamente

Artículo escrito por aksrathod07 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 *