我有一个 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/