搜索
您的当前位置:首页正文

Java:Map的排序与遍历

来源:步旅网

在用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());
		}
	}
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top