我有一个HashMap
字符串数组,由整数标识为键。我想用键对这个HashMap进行排序。
我的hashmap:HashMap<Integer, String[]> htab = new HashMap<>();
我尝试了TreeMap
解决方案,但它没有我的值(String[]
)的兼容构造函数:
Map<Integer, String> map = new TreeMap<Integer, String>((Comparator<? super Integer>) htab);
我的一组HashMap示例:
21 : {"2","3","5","10","0"}
答案 0 :(得分:1)
您的TreeMap不需要(Comparator<? super Integer>)
部分。您在声明中也使用了String
而不是String[]
。这段代码可以使用:
SortedMap<Integer, String[]> sortedMap = new TreeMap<Integer, String[]>(Htab);
或者您也可以将Htab声明为TreeMap而不是HashMap。
答案 1 :(得分:0)
如果要对键进行排序,可以使用TreeSet或TreeMap,如下所示。密钥是自然排序的,即排序由Integer类定义。
Map<Integer, String[]> map = new HashMap<>();
Set<Integer> naturallySortedKeys = new TreeSet<>(map.keySet());
Map<Integer, String[]> naturallySortedMap = new TreeMap<>(map);
答案 2 :(得分:0)
只需使用TreeMap
作为参数创建HashMap
。
public void test() {
Map<Integer, String[]> htab = new HashMap<>();
String[] a = {"a", "3", "5", "10", "0"};
htab.put(21, a);
String[] b = {"b", "3", "5", "10", "0"};
htab.put(210, b);
String[] c = {"c", "3", "5", "10", "0"};
htab.put(2, c);
Map<Integer, String[]> sorted = new TreeMap<>(htab);
System.out.println(htab);
System.out.println(sorted);
}
答案 3 :(得分:0)
您可以根据jesper撰写的评论使用TreeMap。
Map<Integer, String[]> map = new TreeMap<Integer, String[]>();
map.put(21, new String[] {"abc","bcde", "regweger"});
map.put(43, new String[] {"dbc","bgercde", "reggweer"});
map.put(31, new String[] {"afbc","bcdrge", "rewgwger"});
map.put(5, new String[] {"abgc","bcdee", "regwesgr"});
map.put(98, new String[] {"abhhc","bc3gde", "regrer"});
map.put(11, new String[] {"awqbc","bc33de", "frgeger"});
System.out.println(map.toString());
您会发现to字符串按键值的升序打印出元素。