📌  相关文章
📜  Java程序按值对映射进行排序

📅  最后修改于: 2020-09-26 19:19:48             🧑  作者: Mango

在此程序中,您将学习按Java中的值对给定的映射进行排序。

示例:按值对地图排序
import java.util.*;

public class SortMap {

    public static void main(String[] args) {

        LinkedHashMap capitals = new LinkedHashMap<>();
        capitals.put("Nepal", "Kathmandu");
        capitals.put("India", "New Delhi");
        capitals.put("United States", "Washington");
        capitals.put("England", "London");
        capitals.put("Australia", "Canberra");

        Map result = sortMap(capitals);

        for (Map.Entry entry : result.entrySet())
        {
            System.out.print("Key: " + entry.getKey());
            System.out.println(" Value: " + entry.getValue());
        }
    }

    public static LinkedHashMap sortMap(LinkedHashMap map) {
        List> capitalList = new LinkedList<>(map.entrySet());

        Collections.sort(capitalList, (o1, o2) -> o1.getValue().compareTo(o2.getValue()));

        LinkedHashMap result = new LinkedHashMap<>();
        for (Map.Entry entry : capitalList)
        {
            result.put(entry.getKey(), entry.getValue());
        }

        return result;
    }
}

输出

Key: Australia Value: Canberra
Key: Nepal Value: Kathmandu
Key: England Value: London
Key: India Value: New Delhi
Key: United States Value: Washington

在上面的程序中,我们有一个LinkedHashMap其中有国家及其各自的资本以可变资本的形式存储。

我们有一个sortMap()方法,该方法接受一个链接的哈希图并返回排序后的链接的哈希图。

在该方法内部,我们将哈希映射转换为列表capitalList 。然后,我们使用sort()方法获取一个列表和一个比较器。

在我们的例子中,比较器是lambda,它比较(o1, o2) -> o1.getValue().compareTo(o2.getValue())两个列表o1o2中的值

操作完成后,我们得到排序后的列表capitalList 。然后,我们只需将列表转换为LinkedHashMap结果并返回即可。

返回main()方法,我们遍历地图中的每个项目并打印其键和值。