Java HashMap按值排序然后键

时间:2015-11-26 19:30:17

标签: java sorting hashmap

我试图先按值(整数)然后按键(字符串)对HashMap进行排序。以下方法似乎没有正确排序hashmap。任何想法如何让它正常工作?

private static Map<String, Integer> sortHash(Map<String, Integer> map) {
    List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());

    // Sort list by integer values then by string keys
    Collections.sort(list, (a, b) -> {
        int cmp1 = a.getValue().compareTo(b.getValue());
        if (cmp1 != 0)
            return cmp1;
        else
            return a.getKey().compareTo(b.getKey());
    });

    Map<String, Integer> result = new HashMap<>();
    for (Map.Entry<String, Integer> entry : list)
        result.put(entry.getKey(), entry.getValue());

    return result;
}

1 个答案:

答案 0 :(得分:3)

问题在于:

Map<String, Integer> result = new HashMap<>();

使用LinkedHashMap,因为此地图将保持添加键/值对的顺序。