我想使用Arrays.sort
对数组进行排序。我知道它应该由Collections.sort
完成,但是老师想要使用Arrays.sort
这是可能的吗? 我想通过比较器。
答案 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} 所以它按密钥对条目进行排序。