Map按键排序(sort by key)
1.需求:已知有如下map,要求按照key倒序排列遍历。
Map<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("3", 3);
map.put("2", 2);
map.put("5", 5);
map.put("4", 4);
2.实现
①自定义排序方法,返回有序map
private Map<String,Integer> sortMapByKey(Map<String, Integer> map) {
if(CollectionUtils.isEmpty(map)){
return null;
}
//treeMap适用于按自然顺序或自定义顺序遍历键(key)
Map<String,Integer> treeMap = new TreeMap<>(new MapKeyComparator());
treeMap.putAll(map);
return treeMap;
}
②自定义比较器,实现Comparator接口
/**
* 自定义比较器
*/
class MapKeyComparator implements Comparator<String>{ @Override
public int compare(String str1, String str2) {
return str2.compareTo(str1);
}
}
③遍历有序map
@Test
public void test1() {
Map<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("3", 3);
map.put("2", 2);
map.put("5", 5);
map.put("4", 4);
Map<String,Integer> resultMap = sortMapByKey(map);
for (Map.Entry<String,Integer> entry:resultMap.entrySet()){
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
3.Java8实现按照key倒序排列遍历
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("3", 3);
map.put("2", 2);
map.put("5", 5);
map.put("4", 4);
Map<String, Integer> resultMap = new TreeMap<>((str1, str2) -> str2.compareTo(str1));
resultMap.putAll(map);
resultMap.forEach((key,value)-> System.out.println(key+":"+value));
}
Map按键排序(sort by key)的更多相关文章
- java -- 对Map按键排序、按值排序
java -- 对Map按键.按值排序 1.按键排序(sort by key) 直接上代码 ↓ public Map<String, Str ...
- 160725、Java Map按键排序和按值排序
按键排序(sort by key) jdk内置的Java.util包下的TreeMap<K,V>既可满足此类需求,原理很简单,其重载的构造器之一 有一个参数,该参数接受一个比较器,比较器定 ...
- Java Map按键(Key)排序和按值(Value)排序
Map排序的方式有很多种,两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value).1.按键排序jdk内置的java.util包下的TreeMap<K,V ...
- java Map 之 排序(key,value)
一:起因: (1)现实中须要Map容器进行排序的情况非常多非常多:由于Map<key,value>键值对的存储结构特别是HashMap的结构是非常优秀的,数据存储就难免对其进行排序: (2 ...
- java8新特性:对map集合排序
一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...
- Java中Map<Key, Value>存储结构根据值排序(sort by values)
需求:Map<key, value>中可以根据key, value 进行排序,由于 key 都是唯一的,可以很方便的进行比较操作,但是每个key 对应的value不是唯一的,有可能出现多个 ...
- Map排序(按key排序,按value排序)
主要分两种,按键排序.按值排序. 而且,按key排序主要用于TreeMap,而按value排序则对于Map的子类们都适用. 一.按键排序 按Key排序主要用于TreeMap,可以实现按照Key值的大小 ...
- Java语言利用Collections.sort对Map,List排序
1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...
- Map集合按照value和key进行排序
最近由于特殊的业务需求,需要做相关数据排序,下面就贴出其中的将map集合中按照value或者key进行排序的代码,后面再具体详说. /** * map 集合排序 * @param map * @ret ...
随机推荐
- Flatty Shadow图标自动产生器——在线生成各种扁平化 ICON
在扁平化风格越来越流行的今天,网页.软件界面和图标的设计大都采用了扁平化风格.特别是扁平化图标的设计,摒弃了一切3D元素的设计,阴影.纹理.透视神马的统统不要,让图标简洁高效,富有现代感. 今天给大家 ...
- spring_入门配置和注入
Spring的获取容器: public static void main(String[] args) { //获取核心容器 BeanFactory延迟加载对象 ApplicationContext ...
- Mongodb安装遇到的问题
今天我第一次接触MongoDB,在安装过程中,因为对这个东西不了解,报错了我也不知道是哪里的错,还在网上查了半天资料,后来我懂了,感觉上午就是在浪费时间,是我没睡醒,没睡醒.. 在安装上MongoDB ...
- windows 和 linux 多线程
学习了几天多线程技术,做个总结,便于记忆. 一般 多线程传递参数 为 void* 所以会有一个强制转换过程 (int*) (void *)等,传递多个参数选择 结构体指针.为了避免多个线程访问数据 ...
- Spring入门(二)
Spring IOC&DI 控制反转(inversion of control):控制什么?什么反转? 我们都知道,传统的程序中,如果A类需要使用B类对象,会在程序中直接创建B类对象实例,此时 ...
- robotframework+python3+selenium之下拉框的选择---第五集
由于我没有找到option形式的,所以借鉴其他大神的博客内容,如下: 1.F12后看见下拉框的源码是<option xxx> 2.如果F12后看到的下拉源码是这样的: <div xx ...
- java 直接调用micorosoft office (2003-2007和2010版本)中excel中计算函数
主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx 读取excel和MySQL相关: java的poi技 ...
- NX二次开发-UFUN创建表达式UF_MODL_create_exp_tag有TAG
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建一个新的表达式,无TAG UF_MOD ...
- 【转载】API权限设计总结
本文内容转自:http://blog.csdn.net/initphp/article/details/8636669 API权限设计总结: 最近在做API的权限设计这一块,做一次权限设计的总结. 1 ...
- Spring-Security (学习记录二)--修改为自己的登录页面
目录 1.修改spring-security.xml配置文件 2.增加login.jsp页面 3.重启项目即可看到效果 1.修改spring-security.xml配置文件 <!-- auto ...