遍历Map的两种方法(有排序)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遍历Map的两种方法(有排序)相关的知识,希望对你有一定的参考价值。
初始化一个map
1
2
3
4
5
|
Map<String, String> map = new HashMap<String, String>(); map.put( "1" , "hell" ); map.put( "2" , "hello" ); map.put( "3" , "hel" ); map.put( "4" , "hello" ); |
1、第一种方式,普遍使用
1
2
3
4
|
Set<String> keySet = map.keySet(); for (String key : keySet) { System.out.println( "key= " + key + " and value= " + map.get(key)); } |
2、第二种方式,容量大时推荐使用
1
2
3
4
5
|
Set<Map.Entry<String,String>> entySet = map.entrySet(); for (Map.Entry<String, String> entry : entySet) { System.out.println( "key= " + entry.getKey() + " and value= " + entry.getValue()); } |
实验发现输出的顺序是乱的,排个序吧
1、按照key值排序
首先写个排序类
1
2
3
4
5
6
7
|
private static class KeyComparator implements Comparator<Map.Entry<String, String>> { public int compare(Map.Entry<String, String> m, Map.Entry<String, String> n) { return m.getKey().compareTo(n.getKey()); } } |
把数据放在list里边才可以使用
1
2
3
4
5
6
7
8
9
|
List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(); list.addAll(map.entrySet()); KeyComparator kc = new KeyComparator(); Collections.sort(list, kc); for (Iterator<Map.Entry<String, String>> it = list.iterator(); it .hasNext();) { System.out.println(it.next()); } |
2、按照Value值排序
1
2
3
4
5
6
7
|
private static class ValueComparator implements Comparator<Map.Entry<String, String>> { public int compare(Map.Entry<String, String> m, Map.Entry<String, String> n) { return m.getValue().compareTo(n.getValue()); } } |
排序输出
1
2
3
4
5
6
7
8
|
list.clear(); list.addAll(map.entrySet()); ValueComparator vc = new ValueComparator(); Collections.sort(list, vc); for (Iterator<Map.Entry<String, String>> it = list.iterator(); it.hasNext();) { System.out.println(it.next()); } |
Tips: 如有错误请指出,我会及时修改
以上是关于遍历Map的两种方法(有排序)的主要内容,如果未能解决你的问题,请参考以下文章