是否可以通过Arrays.sort对HashMap进行排序

时间:2013-05-19 10:11:18

标签: java arrays sorting collections hashmap

我想使用Arrays.sort对数组进行排序。我知道它应该由Collections.sort完成,但是老师想要使用Arrays.sort这是可能的吗? 我想通过比较器。

3 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

Arrays.sort(yourHashMap.entrySet().toArray());

答案 1 :(得分:1)

您无法对HashMap 本身进行排序,因为它无法保留订单。

您可以将键集,条目集或值集合提取到列表或数组,然后对结果数据结构进行排序。这是一个例子:

HashMap<String, Integer> map = ...
String[] orderedKeys = map.keySet().toArray(new String[map.size()]);
Arrays.sort(orderedKeys, someStringComparator);

当然,这不会影响原始Map的键/值/条目的顺序。

如果您希望按照排序顺序维护地图中的键,则需要使用带有TreeMap键的Comparable或合适的Comparator ...而不是HashMap

答案 2 :(得分:0)

据我所知,你无法使用Collections.sort()或Arrays.sort()直接对Map进行排序,但你可以使用TreeMap并将比较器传递给它:

        Map<Integer, String> map = new TreeMap<Integer, String>(new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1.compareTo(o2);
        }
    });

    map.put(1, "1");
    map.put(0, "0");
    map.put(3, "3");
    map.put(2, "2");

    System.out.println(map);

这将打印:{0 = 0,1 = 1,2 = 2,3 = 3} 所以它按密钥对条目进行排序。