Java 可以按数组对HashMap进行排序吗
我想使用Arrays.sort对数组进行排序。我知道应该通过Collections.sort来完成,但是老师想要使用数组。sort这可能吗?我想通过comparator。您可以使用以下内容:Java 可以按数组对HashMap进行排序吗,java,arrays,sorting,collections,hashmap,Java,Arrays,Sorting,Collections,Hashmap,我想使用Arrays.sort对数组进行排序。我知道应该通过Collections.sort来完成,但是老师想要使用数组。sort这可能吗?我想通过comparator。您可以使用以下内容: Arrays.sort(yourHashMap.entrySet().toArray()); 据我所知,您不能直接使用Collections.sort或Arrays.sort对映射进行排序,但您可以使用树映射并向其传递一个比较器: Map<Integer, String> ma
Arrays.sort(yourHashMap.entrySet().toArray());
据我所知,您不能直接使用Collections.sort或Arrays.sort对映射进行排序,但您可以使用树映射并向其传递一个比较器:
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}
因此它按键对条目进行排序。您不能对HashMap本身进行排序,因为它不能保存顺序
您可以将键集、条目集或值集合提取到列表或数组中,然后对生成的数据结构进行排序。下面是一个例子:
HashMap<String, Integer> map = ...
String[] orderedKeys = map.keySet().toArray(new String[map.size()]);
Arrays.sort(orderedKeys, someStringComparator);
当然,这不会影响原始映射的键/值/条目的顺序
如果您希望映射中的键按排序顺序进行维护,则需要使用具有可比较键的树映射或合适的比较器。。。而不是HashMap。此外,您不能使用collections.sort对映射进行排序。是否对映射项或值进行排序?是否对ArrayList或HashMap进行排序?第二个是不可能的,因为没有排序HashMap这样的思想