按值对 LinkedHashMap 进行排序的Java程序
LinkedHashMap 就像 HashMap 一样,具有维护插入其中的元素顺序的附加功能。 HashMap 提供了快速插入、搜索和删除的优点,但它从不维护 LinkedHashMap 提供的插入轨迹和插入顺序,可以按插入顺序访问元素。
因此 LinkedHashMap 是 HashMap 的子类。现在,在 LinkedHashMap 中必须保持插入顺序,因此将 LinkedHashMap 转换为列表,然后打印值按排序顺序排列的列表。
插图:
Input : LinkedHashMap = {{“for”, 2}, {“Geek”, 3}, {“Geeks”, 1}}
Output:
Key -> Geeks : value -> 1
Key -> for : value -> 2
Key -> Geek : value ->3
程序:
- 创建一个 LinkedHashMap 类的对象,其中该对象被声明为 Integer 和 String 类型。
- 使用 put() 方法向上面创建的地图对象添加元素。这里的元素是键值对。
- 从地图中检索以上所有条目,并使用entrySet()方法将它们转换为列表。
- 使用自定义比较器对列表的值进行排序。
- 现在使用 Collections 类的 sort 方法,我们在其中使用自定义比较器来比较地图的值。
- 使用 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