Hashmap根据key排序

排序方法为将Map的entrySet加入可排序的数据结构中,例如TreeSet,ArrayList。然后自定义Comparator进行排序

以下为示例:

public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("3", "c");
        map.put("2", "b");
        map.put("1", "a");

        SortedSet<Map.Entry<String, String>> sortedMap = new TreeSet<Entry<String, String>>(
                new Comparator<Map.Entry<String, String>>() {
                    public int compare(Map.Entry<String, String> o1,
                            Map.Entry<String, String> o2) {
                        return o1.getKey().compareTo(o2.getKey());
                    }
                });
        sortedMap.addAll(map.entrySet());

        Iterator<Map.Entry<String, String>> itrator = sortedMap.iterator();
        Map.Entry<String, String> entry;
        while (itrator.hasNext()) {
            entry = itrator.next();
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }

输出效果:

1:a
2:b
3:c

这里注意keySet()和entrySet(),都可以用来遍历Map

如果只需要key的集合则使用keySet,如果需要遍历key和value的集合则使用entrySet效率较高

错误示例,效率低:

for (Integer key : map.keySet()) {
            String value = map.get(key);
}

正确遍历方法:

for (Entry<Integer, String> entry : map.entrySet()) {
            String value = entry.getValue();
}


你可能感兴趣的:(Hashmap根据key排序)