我想使用Arrays.sort
. 我知道应该这样做,Collections.sort
但是老师想要使用Arrays.sort
这可能吗? 我想通过比较器。
问问题
1125 次
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 回答