Map四种获取key和value值的方法,以及对map中的元素排序(转载)_如何获取map的某个value-程序员宅基地

技术标签: 基础知识  

获取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());  
        }  

    }  

}  
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Richard_reallife/article/details/78478958

智能推荐

html移出定时器,jquery 鼠标移入移出效果定时器-程序员宅基地

文章浏览阅读373次。$("#kefu3").bind({"mouseover":function(){var timerkf;$(this).css("background","url(/public/images/kefu3_over.png)");$("#saoma").fadeIn();},"mouseout":function(){$(this).css("background","url(/public/i..._jquery鼠标移入移出启动计时器

setTimeout()和setInterval()方法的区别?_settimeout和setinterval的区别-程序员宅基地

文章浏览阅读1.3w次,点赞2次,收藏3次。链接地址:https://zhidao.baidu.com/question/808980857761575052.html因为setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次而setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式所以,完全是不一样的很多人习惯于将setTimeout包含于被执行..._settimeout和setinterval的区别

解决:recv() failed (104: Connection reset by peer) while proxying upgraded connection,问题是连接websocket失败-程序员宅基地

文章浏览阅读803次,点赞8次,收藏8次。1、单客服端连接中转服务的时候,中转服务端就直接连接websocket服务端。_recv() failed (104: connection reset by peer)

linux开机运行jar包,Linux中jar包启动和jar包后台运行的实现方式-程序员宅基地

文章浏览阅读362次。linux 运行jar包命令如下:方式一:java -jar shareniu.jar特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出那如何让窗口不锁定?方式二java -jar shareniu.jar &&代表在后台运行。特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。继续改进,如何让窗口关闭时hYoeXW,程序仍然运行?方式..._开机自启jar包跟后台运行一样吗

安卓端APP遥控树莓派小车_手机实时遥控树莓派小车实现-程序员宅基地

文章浏览阅读2w次,点赞9次,收藏105次。在android端写一个小小的控制器来通过局域网来控制树莓派小车的行驶,基本思路是在树莓派上写一个socket服务器,android端写一个socket客户机,两边约定好命令的指令(例如可以简单的把停止约定为“0”,把前进约定为“1”),android负责发送,树莓派负责接受并执行。用这种方法理论上是可以远程控制的,前提是得要知道树莓派被分配的公网IP。_手机实时遥控树莓派小车实现

wordpress 添加自定义字段到 文章_wordpass 数据库 增加字段-程序员宅基地

文章浏览阅读2.8k次。$my_post = array( 'post_title' => $publication_name, 'post_excerpt' => $publication_name, 'post_date' => '2019-04-30 09:00:00', 'post_date_gmt' => '2019-04-30 09:..._wordpass 数据库 增加字段

随便推点

安卓ListView的使用_android listview使用-程序员宅基地

文章浏览阅读1.1k次。listview是一个以垂直方式在项目中显示视图的列表。是一种不能实现确定视图中的内容的适配器视图(adapter view)。数据和视图的绑定,需要通过继承ListViewAdapter接口的适配器实现。确保当上下滚动的时候,能够动态刷新视图内容。通常我们都会自定义一个继承自BaseAdapter(已继承ListViewAdapter),ArrayAdapter(继承自BaseAdapter),SimpleAdapter(继承自BaseAdapter)的类,重写getView()方法,实现自己想要的功能。_android listview使用

全屏模式fullscreen_fullscreen error-程序员宅基地

文章浏览阅读1.3w次。全屏模式fullscreen_fullscreen error

wx.navigateTo 跳转时的参数传递问题_wx.navigateto传参-程序员宅基地

文章浏览阅读2.9k次,点赞2次,收藏3次。wx.navigateTo 可以保留当前页,新建目标页,跳转过去。不能跳转到 tabbar 页面。在跳转的过程中可以传 参,有两种传参的方案:正向传参假设A跳转到B,同时携带参数,A传参,B接收,这种方式为正向传参。A页面:wx.navigateTo({url: '/pages/testing/b/b?id=10&name=张三&pwd=1234'})B页面:Page({data: {},// 系统自动调用,options系统自动传入// optio._wx.navigateto传参

java 列表、集合与数组之间的转化_java list转集合 method threw 'java.lang.arraystoreexc-程序员宅基地

文章浏览阅读1.9w次。package test;import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Set;public class Test2 { public static void main(String[] a_java list转集合 method threw 'java.lang.arraystoreexception' exception.

了解Linux磁盘及分区的过程-程序员宅基地

文章浏览阅读3.2k次,点赞7次,收藏4次。关机添加,自动识别 或 开机添加,命令识别: 扫描磁盘必须分区 格式化。

低代码平台会取代COTS吗_cots 风险-程序员宅基地

文章浏览阅读151次。以前很多企业都通过购买COTS的方式获得软件产品和技术服务,这使得很多的企业对IT的依赖性越来越强,但是现在出现了低代码开发平台,可以帮助企业减轻对IT的依赖,并且提高软件开发的效率,那么COTS会被低代码取代吗?下面一起来了解一下相关的知识吧!  变革助长了低代码  一些企业正在尝试用低代码代替COTS,通过低代码企业从一开始就可以自由的创建与业务目标直接相符的应用程序,构建核心和关键任务系统。  一些企业已经开始围绕任务关键型遗留系统进行创新。例如,员工福利、人力资源和工资管理公司希望为每个客户提_cots 风险

推荐文章

热门文章

相关标签