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)的更多相关文章

  1. java -- 对Map按键排序、按值排序

                             java  -- 对Map按键.按值排序 1.按键排序(sort by key) 直接上代码  ↓ public Map<String, Str ...

  2. 160725、Java Map按键排序和按值排序

    按键排序(sort by key) jdk内置的Java.util包下的TreeMap<K,V>既可满足此类需求,原理很简单,其重载的构造器之一 有一个参数,该参数接受一个比较器,比较器定 ...

  3. Java Map按键(Key)排序和按值(Value)排序

    Map排序的方式有很多种,两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value).1.按键排序jdk内置的java.util包下的TreeMap<K,V ...

  4. java Map 之 排序(key,value)

    一:起因: (1)现实中须要Map容器进行排序的情况非常多非常多:由于Map<key,value>键值对的存储结构特别是HashMap的结构是非常优秀的,数据存储就难免对其进行排序: (2 ...

  5. java8新特性:对map集合排序

    一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...

  6. Java中Map<Key, Value>存储结构根据值排序(sort by values)

    需求:Map<key, value>中可以根据key, value 进行排序,由于 key 都是唯一的,可以很方便的进行比较操作,但是每个key 对应的value不是唯一的,有可能出现多个 ...

  7. Map排序(按key排序,按value排序)

    主要分两种,按键排序.按值排序. 而且,按key排序主要用于TreeMap,而按value排序则对于Map的子类们都适用. 一.按键排序 按Key排序主要用于TreeMap,可以实现按照Key值的大小 ...

  8. Java语言利用Collections.sort对Map,List排序

    1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...

  9. Map集合按照value和key进行排序

    最近由于特殊的业务需求,需要做相关数据排序,下面就贴出其中的将map集合中按照value或者key进行排序的代码,后面再具体详说. /** * map 集合排序 * @param map * @ret ...

随机推荐

  1. 标准 I/O (带缓冲)

    标准IO中分文本流和二进制流 windows系统中:(1) 二进制流 - 换行符 '\n'    (2) 文本流 - 换行符 ‘\r' '\n' linux 系统中:不区分文本流和二进制流:换行符 - ...

  2. CentOS7.6编译安装openssl-1.1.1c

    卸载旧版本OpenSSL # which openssl/usr/bin/openssl# mv openssl openssl.oldrm -rf /etc/ssl #删除配置文件 CentOS7. ...

  3. pycharm破解教程

    转载 查询 https://blog.csdn.net/u014044812/article/details/86679150

  4. Mac电脑如何转换图片格式?ImageWell for Mac转换图片格式教程

    想用Mac电脑转换图片格式?我想你可以借助ImageWell for Mac软件!ImageWell是一款简单好用的的图像处理工具,具有显示,编辑,处理,保存等功能.下面小编来为大家演示在Mac电脑上 ...

  5. 泛型(Generic)类的使用原因和使用方式

    我们每个苹果都套个盒子,给每本书都套个盒子,但是苹果盒子和书盒子是不同的, 这样下去如果有更多的东西需要套盒子,1000种产品有1000种相应的盒子,造成类型极度膨胀非常难以维护. class Pro ...

  6. Change myself to be better

    发现和改变自己不好的习惯 遇到问题的反应 自己遇到问题的时候,特别是不熟悉的问题的时候就会有点焦虑,这个应该是每个人都会有的,遇到自己不熟悉的或者是没有经历过的东西都会 感觉不舒服,或者是遇到难题或者 ...

  7. bzoj3505: [Cqoi2014]数三角形 [数论][gcd]

    Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Input 输入一行,包含两个空格分隔的正整数m和 ...

  8. Delphi做异型窗体PNG透明

    {*******************************************************}{ }{ 异形窗口 }{ }{ 2009.12.4 王 锐 }{ }{******** ...

  9. document.body / document.ducumentElement /等获取高度和宽度的区别

    document.body / document.ducumentElement /等获取高度和宽度的区别 <!DOCTYPE html> <html> <head la ...

  10. CSDN首页> 云计算 孙玄:解析58同城典型技术架构及演变

    转:http://www.csdn.net/article/2015-04-09/2824437 在UPYUN主办的“UPYUN Open Talk”第三期北京站上,58同城系统架构师孙玄详细介绍了5 ...