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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

获取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());}*//*//使用迭代器,获取keyIterator<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>>(){@Overridepublic 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());}}}

转载于:https://my.oschina.net/u/2331760/blog/1648953

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/452264.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/452264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置Oracle Instant Client环境

1.配置Oracle Instant Client环境 到Oracle官网下载Oracle Instant Client&#xff0c;注意选择x86平台&#xff0c;Toad只认32位的Oracle Instant Client。至于版本号&#xff0c;没有特别要求&#xff0c;版本向下兼容。 桌面上&#xff0c;右键点“我的电脑”&#xff0c;选…

学成在线--6.CMS页面管理开发(删除页面)

文章目录0.删除用户逻辑1.删除页面接口定义2.后端开发--Dao3.后端开发--Service4.后端开发--controller5.前端开发--page_list.vue添加删除按钮6.前端开发--page_list.vue编写删除事件7.后端开发--Api方法定义Api方法0.删除用户逻辑 1&#xff09;前端逻辑 &#xff08;1&…

诺基亚是“不跟随”还是跟不上?

在Android和iPhone为主流的环境下&#xff0c;诺基亚用“不跟随”的口号表明自己欲保持个性&#xff0c;但是否也意味着其固步自封&#xff0c;跟不上时代&#xff1f; 5年市值缩水超900亿欧元&#xff0c;全球业绩连续4个季度亏损&#xff0c;更为可怕的是&#xff0c;被视为…

HTTP 协议(详解)

HTTP协议简介&#xff1a;HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写&#xff0c;是用于万维网&#xff08;www.world wide web&#xff09;服务器与本地浏览器之间传输文本的传输协议。 http请求协议与相应协议HTTP协议包含浏览器发送数据到服务器需要遵循…

对象的特点

对象有如下一些基本特点。(1) 以数据为中心。操作围绕对其数据所需要做的处理来设置&#xff0c;不设置与这些数据无关的操作&#xff0c;而且操作的结果往往与当时所处的状态 (数据的值)有关。 (2) 对象是主动的。它是进行处理的主体。不能从外部直接加工它的私有数据&a…

React Native集成Redux框架讲解与应用

学过React Native的都知道&#xff0c;RN的UI是根据相应组件的state进行render的&#xff0c;而页面又是由大大小小的组件构成&#xff0c;导致每个组件都必须维护自身的一套状态&#xff0c;因此当页面复杂化的时候&#xff0c;管理state会相当吃力的。而redux提供了一套机制来…

【笔试记录】2021/3/10阿里

阿里20210310春招笔试记录-Python解题 第一题 问题描述&#xff1a; 小偷从出发点按指定方向出发&#xff0c;除非遇到墙或超出城市必须转方向&#xff0c;不然只能直走。城市大小m*n。输入描述&#xff1a; 1. 第1行&#xff0c;三个数字m n k&#xff1b;m*n表示城市大小&…

Spring mvc中@RequestMapping 6个基本用法小结

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 小结下spring mvc中的RequestMapping的用法。 1&#xff09;最基本的&#xff0c;方法级别上应用&#xff0c;例如&#xff1a; …

学成在线--7.CMS页面管理开发(异常处理)

文章目录1.异常处理的问题分析2.异常处理流程3.可预知异常处理1.自定义异常类2.异常抛出类3.异常捕获类4.异常处理测试1&#xff09;定义错误代码2&#xff09;异常处理测试4.不可预知异常处理1.定义异常捕获方法1&#xff09;异常抛出测试2&#xff09;异常捕获方法1.异常处理…

函数重载与运算符重载

有两种重载&#xff1a;函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字&#xff1b;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。就是对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型…

Django(6)

为什么不用_set related_name和related_query_name的区别related_name将成为相关对象的属性&#xff0c;允许您使用外键对模型进行“倒退”。例如&#xff0c;如果ModelA有像下面这样的字段&#xff0c;那么model_b ForeignKeyField(ModelB, related_namemodel_as)这将使您能够…

P5 RV1126编码测试Demo

目录 前言 01 测试Demo大致流程图 02 代码分析 2.1 VI设备初始化 2.2 使能通道 —— RK_MPI_VI_EnableChn 2.3 VI 和 VENC绑定 2.4 创建 编码线程 前言 从本章开始我们将要学习嵌入式音视频的学习了 &#xff0c;使用的瑞芯微的开发板 &#x1f3ac; 个人主页&#xff1a…

MP算法和OMP算法及其思想

主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1]&#xff0c;这两个算法虽然在90年代初就提出来了&#xff0c;但作为经典的算法&#xff0c;国内文献(可能有我没有搜索到)都仅描述了算法步骤和简单的应用&#xff0c;并未对其进行详尽的分析&…

【牛客刷题记录】2021-03-10

牛客代码刷题记录1 问题一 给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个&#xff1a; 区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可&#xff0c;不需要输出具体的区间。如给定序列 [6 2 1]则根据上述公式…

SpringMVC详细示例实战教程

一、SpringMVC基础入门&#xff0c;创建一个HelloWorld程序 1.首先&#xff0c;导入SpringMVC需要的jar包。 2.添加Web.xml配置文件中关于SpringMVC的配置 123456789101112131415<!--configure the setting of springmvcDispatcherServlet and configure the mapping-->&…

学成在线--8.Freemarker入门教程

文章目录1.FreeMarker介绍1&#xff09;常用的java模板引擎还有哪些&#xff1f;2&#xff09;freemarker是一个用Java开发的模板引擎3&#xff09;模板数据模型输出2.FreeMarker快速入门1&#xff09;创建测试工程2&#xff09;配置文件3&#xff09;创建模型类4&#xff09;创…

面向对象建模

用面向对象方法开发软件&#xff0c;通常需要建立3种形式的模型&#xff0c;它们分别是 描述系统数据结构的对象模型 &#xff0c; 描述系统控制结构的动态模型 和 描述系统功能的功能模型 。一个典型的软件系统使用数据结构(对象模型)&#xff0c;执行操作(动态模型)&#xff…

if...elif...else...fi和case...esac的脚本条件判断式

注意1&#xff1a; if 表达式和case 表达式的区别及什么时候使用哪个要有明确的区分&#xff1f; 『 if .... then .... fi 』对于变量的判断是以『比对』的方式来分辨的&#xff0c; 如果符合状态就进行某些行为&#xff0c;并且透过较多层次 (就是elif ) 的方式来进行多个变量…

安卓自定义View进阶-分类与流程

自定义View绘制流程函数调用链(简化版) 一.自定义View分类 我将自定义View分为了两类(sloop个人分类法&#xff0c;非官方)&#xff1a; 1.自定义ViewGroup 自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件&#xff0c;大多继承自ViewGroup或各种Layout&…

【笔试记录】2021/3/13美团

2021/3/13美团笔试 1.旋转二维数组 m, n map(int, input().split()) a [] for _ in range(m):a.append(list(map(int, input().split()))) for j in range(n):for k in range(m):print(a[k][j], end )print(end\n)输入输出 2.找出输入字符串中的所有数字 s input() n …