Java 使用可比较接口对LinkedHashMap的值进行排序

Java 使用可比较接口对LinkedHashMap的值进行排序

LinkedHashMap就像HashMap一样,有一个额外的功能,即维护插入其中的元素的顺序。假设你已经通过了java中的LinkedHashMap,并且了解了LinkedHashMap。

语法:

int compare(T obj) ;

说明:

输入  : { GEEKS=1, geeks=3, for=2 }
输出 : { GEEKS=1, for=2, geeks=3 }

输入  : { 101 = 2, 102 = 9, 103 = 1, 105 = 7 }
输出 : { 103 = 1, 101 = 2, 105 = 7, 102 = 9 }

方法: 在使用Comparable接口对LinkedHashMap的值进行排序时,这个接口对实现它的每个类的对象施加了一个总排序。这个排序被称为类的自然排序,而类的比较器方法被称为其自然比较方法。

实现:

示例

// 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);
    }
}

输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程