📜  按值对 LinkedHashMap 进行排序的Java程序

📅  最后修改于: 2022-05-13 01:54:48.460000             🧑  作者: Mango

按值对 LinkedHashMap 进行排序的Java程序

LinkedHashMap 就像 HashMap 一样,具有维护插入其中的元素顺序的附加功能。 HashMap 提供了快速插入、搜索和删除的优点,但它从不维护 LinkedHashMap 提供的插入轨迹和插入顺序,可以按插入顺序访问元素。

因此 LinkedHashMap 是 HashMap 的子类。现在,在 LinkedHashMap 中必须保持插入顺序,因此将 LinkedHashMap 转换为列表,然后打印值按排序顺序排列的列表。

插图:

程序:

  1. 创建一个 LinkedHashMap 类的对象,其中该对象被声明为 Integer 和 String 类型。
  2. 使用 put() 方法向上面创建的地图对象添加元素。这里的元素是键值对。
  3. 从地图中检索以上所有条目,并使用entrySet()方法将它们转换为列表。
  4. 使用自定义比较器对列表的值进行排序。
  5. 现在使用 Collections 类的 sort 方法,我们在其中使用自定义比较器来比较地图的值。
  6. 使用 for 每个循环打印上面的列表对象。

执行:



例子

Java
// java Program to Sort LinkedHashMap by Values
 
// Importing all classes
// from java.util package
import java.util.*;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
 
// Main Class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating an object of LinkedHashMap Class
        // Declaring object of Integer and String type
        LinkedHashMap map
            = new LinkedHashMap<>();
        // Adding elements to the object of Map
        // using the put() method
        // Elements here are key-value pairs
        map.put("for", 2);
        map.put("Geek", 3);
        map.put("Geeks", 1);
 
        // Now, getting all entries from map and
        // convert it to a list using entrySet() method
        List > list
            = new ArrayList >(
                map.entrySet());
 
        // Using collections class sort method
        // and inside which we are using
        // custom comparator to compare value of map
        Collections.sort(
            list,
            new Comparator >() {
                // Comparing two entries by value
                public int compare(
                    Map.Entry entry1,
                    Map.Entry entry2)
                {
 
                    // Substracting the entries
                    return entry1.getValue()
                        - entry2.getValue();
                }
            });
 
        // Iterating over the sorted map
        // using the for each method
        for (Map.Entry l : list) {
 
            // Printing the sorted map
            // using getKey()  and getValue() methods
            System.out.println("Key ->"
                               + " " + l.getKey()
                               + ": Value ->"
                               + l.getValue());
        }
    }
}


输出
Key -> Geeks: Value ->1
Key -> for: Value ->2
Key -> Geek: Value ->3