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. angulatJs 前端数据分页展示——例

    注:css用的是amazeui html: ···<div style="height:500px;overflow: auto;"> <table class= ...

  2. while循环和for循环

    while循环 n='我怎么那么可爱呀' count= while count<len(n): print(n[count]) count+= for循环 n='我怎么那么可爱呀' for i ...

  3. C—变量—register

    Tips 1.寄存器变量可以用来优化加速c语言程序 2.声名只需在类型前多加register 即可,eg register int quick; (quick 就是一个整形的寄存器变量) 3.regi ...

  4. ajax--getJSON

    penson.json [ { "name":"张三", "age":25, "sex":"男", ...

  5. SolidWorks直线命令快捷转换为圆弧命令

    在进行草图绘制的时候,有时候需要切换到圆弧命令,此时来回切换比较麻烦, 我们可以将鼠标回碰线段起点,此时便成为了圆弧工具. 再次回碰,可改变圆心方向 利用鼠标操作,快捷切换绘图工具.

  6. webpack4.0基础

    安装 yarn add webpack webpack-cli -D npx webpack index.js 图片 file-loader module: { rules: [ { test: /\ ...

  7. TTreeView、TTreeNodes和TTreeNode

    TreeView是Delphi中使用频率比较高的一个控件,虽然使用次数很多,但总结不够.借着这次做GDW原型的机会总结一下,写的过程中也会参考网上的博文. TTreeView.TTreeNodes和T ...

  8. params拦截器

    1. params拦截器首先给action中的相关参数赋值,如id  2. prepare拦截器执行prepare方法,prepare方法中会根据参数,如id,去调用业务逻辑,设置model对象   ...

  9. scrapy爬取cnblogs文章列表

    scrapy爬取cnblogs文章 目标任务 安装爬虫 创建爬虫 编写 items.py 编写 spiders/cnblogs.py 编写 pipelines.py 编写 settings.py 运行 ...

  10. Delphi 2010 中的泛型

    Delphi 2010 中的泛型 2010已发布很长时间了,口碑还不错,准备用它开发下一项目,但对泛型等新东西的认识还不够,就搜了一下,发现下面这篇文章,还不错,大家一起补补课吧! C++中的模板.C ...