java map的key和value_Java Map集合按照key和value排序之法
一、理论基点
Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。
TreeMap:基于红黑树(Red-Black-Tree)的NavigableMap实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序,具体取决于使用的构造方法。
HashMap的值是没有顺序的,它是按照key的hashCode来实现的,对于这个无序的HashMap我们要如何实现排序呢? 参照TreeMap的value排序。
Map.Entry返回Collections视图。
二、TreeMap按照key排序
TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,如下:
import java.util.Comparator;
import java.util.TreeMap;public classTestCd {private static voidsortByKeyDesc(){
TreeMap tm=new TreeMap(new Comparator() {
@Overridepublic intcompare(String o1, String o2) {returno2.compareTo(o1);
}
});
tm.put("a", "ddd"); tm.put("b", "ccc");
tm.put("c", "bbb"); tm.put("d", "aaa");for(String key : tm.keySet()) {
System.out.println("key :"+key+",對應的value:"+tm.get(key));
}
}public static voidmain(String[] args) {
sortByKeyDesc();
}
运行结果如下:
key :d,對應的value:aaa
key :c,對應的value:bbb
key :b,對應的value:ccc
key :a,對應的value:ddd
三、TreeMap按照value排序
上面的例子是根据TreeMap的可以值来进行排序的,但是有时我们需要根据TreeMap的value来进行排序。对于value排序我们就需要借助于Collection的sort(List list,Comparator<?super T>c)方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是有一个前提,那就是所有的元素都必须能够根据所提供的比较器来进行比较,如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;public classTestCd {private static voidsortByValueDesc(){
Map tm=new TreeMap();
tm.put("a", "ddd"); tm.put("b", "ccc");
tm.put("c", "bbb"); tm.put("d", "aaa");//这里将map.entrySet()转换成list
List> list = new ArrayList>(tm.entrySet());//然后通过比较器来实现排序
Collections.sort(list,new Comparator>() {//降序排序
@Overridepublic int compare(Entryo1,
Entryo2) {returno2.getValue().compareTo(o1.getValue());
}
});for(Map.Entrymapping:list){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}public static voidmain(String[] args) {
sortByValueDesc();
}
}
运行结果:
a:ddd
b:ccc
c:bbb
d:aaa
java map的key和value_Java Map集合按照key和value排序之法相关推荐
- java util包排序_实现java.util.Comparator接口,对对象集合进行多属性组合排序
Commons - BeanUtils 提供了很多功能,其中一个很有用的是对对象集合进行排序,如Collections.sort(peoples, new BeanComparator("a ...
- java map移除key为空_Java实现过滤掉map集合中key或value为空的值示例
本文实例讲述了Java实现过滤掉map集合中key或value为空的值.分享给大家供大家参考,具体如下: import java.util.Collection; import java.util.H ...
- Java过滤掉map集合中key或value为空的值
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...
- Java将map置空_Java实现过滤掉map集合中key或value为空的值示例
Java实现过滤掉map集合中key或value为空的值示例 发布时间:2020-09-16 23:26:14 来源:脚本之家 阅读:147 作者:May的博客 本文实例讲述了Java实现过滤掉map ...
- 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )
文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...
- Java容器 | 基于源码分析Map集合体系
一.容器之Map集合 集合体系的源码中,Map中的HashMap的设计堪称最经典,涉及数据结构.编程思想.哈希计算等等,在日常开发中对于一些源码的思想进行参考借鉴还是很有必要的. 基础:元素增查删.容 ...
- java 数组map_Java之数组array和集合list、set、map
之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊,直到看到了这篇文章,讲解的很清楚. 世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合 ...
- java private list_Java基础知识回顾之四 ----- 集合List、Map和Set
前言 在上一篇中回顾了Java的三大特性:封装.继承和多态.本篇则来介绍下集合. 集合介绍 我们在进行Java程序开发的时候,除了最常用的基础数据类型和String对象外,也经常会用到集合相关类. 集 ...
- java中list,set,map集合的区别,及面试要点
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- Java进阶(七)Set系列集合、Map集合体系
七.Set系列集合.Map集合体系 需要学会什么? Set系列集合的特点:Set系列集合的特点和底层原理. 集合工具类Collections:快速的对集合进行元素的添加.排序等操作. 综合案例:把Co ...
最新文章
- 无人驾驶 | 为什么双目自动驾驶系统难以普及?
- Cinder LVM backend cinder-volume service down
- Android version and Linux Kernel version
- php 机数,PHP实现自动刷数和“灌水”机
- java aqs源码_java中AQS源码分析
- java监听焦点事件_【Java Swing公开课|Java Swing焦点事件监听器怎么用,看完这篇文章你一定就会了】- 环球网校...
- .NETCore中实现ObjectId反解
- PHP中利用Ffmpeg获得flv视频缩略图和播放时间
- poj Gone Fishing 枚举加贪心 当初做的很纠结啊!!终于A了,与大家分享一下经验
- 节约里程算法java实现
- 关于让div元素垂直居中的几种方法
- C# ZPL命令 实现打印中文
- php后台您没有权限访问该页面,登陆微信公共平台提示没有权限访问该页面请点击返回首页现象的解决办法...
- 读取网络时间完整代码
- 【解决】Error loading the file ‘Assets/.../Scene.unity‘. File is either empty or corrupted, please......
- Codeforces 1633 E. Spanning Tree Queries ——暴力,kruskal,思维
- 如何使用 Django 进行分页
- 《Datawhale推荐系统教程》来了!
- python cmd以管理员执行指令(网卡切断与打开)
- 搜索功能(二)-搜索页面——搜索栏基本布局