Map四种获取key和value值的方法,以及对map中的元素排序(转载)

获取map的值主要有四种方法,这四种方法又分为两类,一类是调用map.keySet()方法来获取key和value的值,另一类则是通过map.entrySet()方法来取值,两者的区别在于,前者主要是先获取到所有的key的集合,当你需要查询value的值的时候需要通过key来查询value,后者则直接将key和value的键值对直接取出来,只用查询一次,对于那种性能更好,我觉得还是用map.entrySet()更好一点,具体请参见map.keySet()和map.EntrySet()的比较,接下来就具体介绍一下四种遍历方法以及map里面的元素通过key或者value来比较大小并排序:

package com.sort;  

import java.util.ArrayList;  
import java.util.Collections;  
import java.util.Comparator;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
import java.util.Map.Entry;  

public class Test {  

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

        //通过map.keySet()方法  
        //方法一:通过得到key的值,然后获取value;  
        /*for(String key : map.keySet()){ 
            String value = map.get(key); 
            System.out.println(key+"  "+value); 
        }*/  
        //使用迭代器,获取key;  
        /*Iterator<String> iter = map.keySet().iterator(); 
        while(iter.hasNext()){ 
            String key=iter.next(); 
            String value = map.get(key); 
            System.out.println(key+" "+value); 
        }*/  
        //通过map.entrySet()方法  
        //方法一:循环map里面的每一对键值对,然后获取key和value  
        /*for(Entry<String, String> vo : map.entrySet()){ 
            vo.getKey(); 
            vo.getValue(); 
            System.out.println(vo.getKey()+"  "+vo.getValue()); 
        }*/  

        /*//使用迭代器,获取key 
        Iterator<Entry<String,String>> iter = map.entrySet().iterator(); 
        while(iter.hasNext()){ 
            Entry<String,String> entry = iter.next(); 
            String key = entry.getKey(); 
            String value = entry.getValue(); 
            System.out.println(key+" "+value); 
        }*/  

        //将map<String,String> 转化为ArryList,但list里面的元素为Entry<String,String>  
        List<Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());  
        Collections.sort(list,new Comparator<Entry<String,String>>(){  
            @Override  
            public int compare(Entry<String, String> o1,  
                    Entry<String, String> o2) {  
                int flag = o1.getValue().compareTo(o2.getValue());  
                if(flag==0){  
                    return o1.getKey().compareTo(o2.getKey());  
                }  
                return flag;  
            }  
        });  
        //遍历list得到map里面排序后的元素  
        for(Entry<String, String> en : list){  
            System.out.println(en.getKey()+" "+en.getValue());  
        }  

    }  

}  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值