-3

我想使用Arrays.sort. 我知道应该这样做,Collections.sort但是老师想要使用Arrays.sort这可能吗? 我想通过比较器。

4

3 回答 3

1

你可以使用这样的东西:

Arrays.sort(yourHashMap.entrySet().toArray());
于 2013-05-19T10:17:07.497 回答
1

您不能对HashMap 本身进行排序,因为它不能保存订单。

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

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

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

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

于 2013-05-19T11:00:28.903 回答
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} 因此它按键对条目进行排序。

于 2013-05-19T10:27:25.247 回答