java - 如何按数字对包含另一张 map 的 map 进行排序

标签 java sorting collections hashmap

我有一个 HashMap 类型:

HashMap<String, HashMap<String, Integer>>

这个 HashMap 的值如下

{name, {dateasString, numberOfTasks}} 

我想按 numberOfTasks 对其进行排序。我找不到这样做的方法。

最佳答案

您无法对 HashMap 进行排序,但您可以获得一个已排序的数组(或列表) 按键。你想如何定义你的排序取决于你 - 只需修改 比较器(或者它调用的 numberOfTasks 函数:)

是这样的吗?

public static void main() {
    final
    HashMap<String, HashMap<String, Integer>> map = new HashMap<String, HashMap<String, Integer>>();

    String[] keys = (String[]) map.keySet().toArray();

    Arrays.sort(keys, new Comparator<String>() {
        @Override
        public int compare(String k1, String k2) {
            int v1 = numberOfTasks(map.get(k1));
            int v2 = numberOfTasks(map.get(k2));
            return Integer.valueOf(v1).compareTo(Integer.valueOf(v2));
        }
    });

    // 'keys' is now sorted the way you want.

}

public static int numberOfTasks(HashMap<String, Integer> map) {
    int max = 0;
    for (Integer i : map.values()) {
        if (i > max) max = i;
    }
    return max;
}

关于java - 如何按数字对包含另一张 map 的 map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14476489/

相关文章:

VB.NET Combobox - 数值的自动完成行为

java - 如何使用此代码对相同的值进行排序?

java - 将 Clojure 数据结构转换为 Java 集合

c# - 在没有看到 "Collection modified,enumeration cannot continue..."的情况下迭代集合的最佳方法

java - Android - 在WebView中显示本地镜像

java - 初始化字符串与连接字符串不同,但打印时结果相同

ios - 如何实现 "sort by"和 "filter by"的项目?

amazon-web-services - 如何比较两个 AWS Rekognition 集合?

java - 反向打印用户输入

java - 如何通过poi注册功能?