前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
1. 获取map的值主要有四种方法,分为两类:

调用 map.keySet() 方法来获取 key 和 value 的值;

通过 map.entrySet() 方法来取值。

2. 两者区别:

前者主要是先获取到所有的key的集合,当你需要查询 value 的值的时候需要通过 key 来查询 value。

后者则直接将 key 和 value 的键值对直接取出来,只用查询一次。

性能上还是 map.entrySet() 更好一点,具体请参见 map.keySet() 和 map.EntrySet() 的比较 。

3. 接下来就具体介绍一下四种遍历方法以及 map 里面的元素通过 key 或者 value 来比较大小并排序:

[java] view plain copy
  1. package com.sort;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Map.Entry;
  9. public class Test {
  10. public static void main(String[] args) {
  11. Map<String,String> map = new HashMap<String,String>();
  12. map.put("b","4");
  13. map.put("a","5");
  14. map.put("c","3");
  15. map.put("d","5");
  16. //通过map.keySet()方法
  17. //方法一:通过得到key的值,然后获取value;
  18. /*for(String key : map.keySet()){
  19. String value = map.get(key);
  20. System.out.println(key+"  "+value);
  21. }*/
  22. //使用迭代器,获取key;
  23. /*Iterator<String> iter = map.keySet().iterator();
  24. while(iter.hasNext()){
  25. String key=iter.next();
  26. String value = map.get(key);
  27. System.out.println(key+" "+value);
  28. }*/
  29. //通过map.entrySet()方法
  30. //方法一:循环map里面的每一对键值对,然后获取key和value
  31. /*for(Entry<String, String> vo : map.entrySet()){
  32. vo.getKey();
  33. vo.getValue();
  34. System.out.println(vo.getKey()+"  "+vo.getValue());
  35. }*/
  36. /*//使用迭代器,获取key
  37. Iterator<Entry<String,String>> iter = map.entrySet().iterator();
  38. while(iter.hasNext()){
  39. Entry<String,String> entry = iter.next();
  40. String key = entry.getKey();
  41. String value = entry.getValue();
  42. System.out.println(key+" "+value);
  43. }*/
  44. //将map<String,String> 转化为ArryList,但list里面的元素为Entry<String,String>
  45. List<Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
  46. Collections.sort(list,new Comparator<Entry<String,String>>(){
  47. @Override
  48. public int compare(Entry<String, String> o1,
  49. Entry<String, String> o2) {
  50. int flag = o1.getValue().compareTo(o2.getValue());
  51. if(flag==0){
  52. return o1.getKey().compareTo(o2.getKey());
  53. }
  54. return flag;
  55. }
  56. });
  57. //遍历list得到map里面排序后的元素
  58. for(Entry<String, String> en : list){
  59. System.out.println(en.getKey()+" "+en.getValue());
  60. }
  61. }
  62. }

转自:http://blog.csdn.net/fishroad/article/details/47421457

Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序相关推荐

  1. Map四种获取key和value值的方法,以及对map中的元素排序

    2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法,这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值, 另 ...

  2. mysql获取配置文件信息,四种获取MySQL数据库配置文件加载顺序

    简介 有时候帮人排查一下MySQL数据库问题的时候,用ps -ef查看MySQL数据库进程的时候,竟然不显示配置的相关信息. 如果想看MySQL数据库的配置,就会一头雾水,于是就特地整理了一下,4种查 ...

  3. java存储整数,用于存储整数数值的是 JAVA四种整数数据类型的取值范围分别是多少...

    JAVA四种整数数据类型的取值范围分别是多少 byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) short的取值范围为-32768~32767,占用2个字节(-2的1 ...

  4. vue 子级拿值_vue 父组件通过$refs获取子组件的值和方法详解

    前言 在vue项目中组件之间的通讯是很常见的问题,同时也是很重要的问题,我们大致可以将其分为三种情况: 父传子:在父组件中绑定值,在子组件中用props接收 子传父:在父组件中监听一个事件,在子组件中 ...

  5. linux虚拟机怎么看var文件,一种获取Linux虚拟机内部日志的方法

    一种获取Linux虚拟机内部日志的方法 [技术领域] [0001]本发明涉及云计算管理技术领域,特别是指一种获取Linux虚拟机内部日志的方法. [背景技术] [0002]在云计算环境下,虚拟机被广泛 ...

  6. js title 单选框 获取_js简单获取表单中单选按钮值的方法

    本文实例讲述了js简单获取表单中单选按钮值的方法.分享给大家供大家参考,具体如下: HTML部分如下: bordercolor="#999999">回退类型: type=&q ...

  7. 三种获取Class类型的实例的方法

    通过Object类中的getClass()方法: 通过静态方法Class.forName("全类名"): 通过类字面常量Class.class. 三种获取Class类型的实例的方法 ...

  8. html单选按钮值的读取,js简单获取表单中单选按钮值的方法

    本文实例讲述了js简单获取表单中单选按钮值的方法.分享给大家供大家参考,具体如下: HTML部分如下: bordercolor="#999999">回退类型: type=&q ...

  9. win10运行在哪里打开_Win10在哪里卸载软件程序?Win10四种正确卸载软件或者游戏的方法...

    如今Win10系统已经是目前主流的操作系统,各个功能都十分完善了,可能熟悉Win7或者XP的朋友,刚刚开始使用Win10操作系统的一些朋友,连卸载软件程序都不知道怎么卸载,找不到地方.那么Win10在 ...

最新文章

  1. 还只是 39 岁!一个天才年轻程序员的陨落
  2. python迭代器与生成器_Python的迭代器和生成器
  3. Java集合框架(一)
  4. 【Python】Python库之数据分析
  5. .Net配置文件中数据库中连接字符串用法总结
  6. 【图像配准】基于matlab GUI互相关图像配准【含Matlab源码 853期】
  7. esxi update patch
  8. 如何快速成长为图形学工程师
  9. 足球相声:我现在真的火了
  10. Unix/Linux编程:操作系统中的TCP/IP软件结构
  11. 统计学原理----算术平均数和调和平均数
  12. FIDO2.0 认证注册流程
  13. Principal Component Analysis(PCA)
  14. IdeaUI快捷键注释不在行首
  15. 【目标规划】暑假计划
  16. IN和EXISTS、not in 和not exists的效率详解
  17. 如何评价《非暴力沟通》这本书?
  18. java保存文件filedialog保存路径 文件名_VB.Net保存文件对话框(SaveFileDialog)
  19. 刷脸时代,“中国式过马路”的终结
  20. group by 和 order by 的区别 + 理解过程

热门文章

  1. 安卓系统挂载NTFS格式硬盘_Mac 读写 NTFS硬盘管理开源工具NTFSTool
  2. 线程池ThreadPool,线程池底层ThreadPoolExecutor方法七大参数,拒绝策略,以及实际开发中高并发下用到哪个线程池?
  3. 【Python CheckiO 题解】Popular Words
  4. php java 共享session_PHP 实现多服务器共享 SESSION 数据
  5. mysql一个事务多个log_MySQL识别一个binlog中的一个事物
  6. 【PAT甲级 - 1028】List Sorting (25分)(模拟,排序)
  7. 【2019浙江省赛 - B】Element Swapping(思维,数学)
  8. 【牛客 - 330G】Applese 的毒气炸弹(最小生成树,构造,判连通图)
  9. seo vue 动态路由_基于vue.jsvue-router的动态更新TDK(SEO优化)
  10. mysql 异步_MySQL -- 异步I/O