在用java刷算法时,常常用到Map这个类,往往涉及需要对Map排序或遍历的问题,但java的Map类并无直接的排序与遍历方法,因此需要间接实现。
下面代码展示了Map的排序与遍历
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class Map排序 {
public static void main(String[] args) {
Map<String, Integer> map=new HashMap<String, Integer>();
map.put("d", 1);
map.put("b", 2);
map.put("a", 4);
map.put("c", 3);
//这里将map.entrySet()转换成list,map.entry表示Map中的一个实体(一个key-value对)
List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
//然后通过比较器来实现排序
Collections.sort(list,new Comparator<Map.Entry<String,Integer>>() {
//升序排序
@Override
public int compare(Map.Entry<String, Integer> o1,Map.Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return o1.getValue()-o2.getValue();
}
});
//遍历输出,foreach方式
for(Map.Entry<String, Integer> mapping:list){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
//也可以用迭代器遍历
Iterator entry =map.entrySet().iterator(); //利用迭代器遍历输出
while (entry.hasNext()) {
Map.Entry item = (Entry) entry.next();
System.out.println(item.getKey()+":"+item.getValue());
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容