如何用整数键Java对数组的HashMap进行排序

时间:2016-11-29 10:28:26

标签: java arrays sorting hashmap

我有一个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"}

4 个答案:

答案 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字符串按键值的升序打印出元素。