博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java.util.Map排序输出
阅读量:4575 次
发布时间:2019-06-08

本文共 2305 字,大约阅读时间需要 7 分钟。

在java的众多Map实现中,Map基本上是不能保证顺序的(LinkedHashMap可以保证插入顺序或者访问顺序,TreeMap默认按照key升序但可以自定义Comparator),在开发过程中当数据量不是很大的时候,使用HashMap去统计数据非常方便,但是为了使得输出结果更美观一些,我们需要按某种自定义顺序输出。

下面介绍一种排序Map的方法,使用起来很方便,如下面代码:

1     private static class ValueComparator implements Comparator
> { 2 3 @Override 4 public int compare(Map.Entry
o1, Map.Entry
o2) { 5 return o1.getValue() - o2.getValue(); 6 } 7 } 8 9 public static void test3() {10 Map
map = new HashMap<>();11 map.put("a", 9);12 map.put("b", 8);13 map.put("c", 7);14 map.put("d", 6);15 map.put("e", 5);16 map.put("f", 4);17 map.put("g", 3);18 map.put("h", 2);19 map.put("i", 1);20 21 List
> mapList = new ArrayList<>();22 mapList.addAll(map.entrySet());23 for (Map.Entry
entry : mapList) {24 System.out.println(entry.getKey() + " : " + entry.getValue());25 }26 System.out.println("\n");27 28 ValueComparator valueComparator = new ValueComparator();29 Collections.sort(mapList, valueComparator);30 for (Map.Entry
entry : mapList) {31 System.out.println(entry.getKey() + " : " + entry.getValue());32 }33 System.out.println("\n");34 }

在上面代码中我们先定义一个Comparator,然后将Map转换为List,通过Collections.sort(mapList, valueComparator)方法进行排序输出。

这种写法还可以简化一下,Comparator使用的时候才定义。

1         Comparator
> comparator = new Comparator
>() { 2 @Override 3 public int compare(Map.Entry
o1, Map.Entry
o2) { 4 return o1.getKey().compareToIgnoreCase(o2.getKey()); 5 } 6 }; 7 8 Collections.sort(mapList, comparator); 9 for (Map.Entry
entry : mapList) {10 System.out.println(entry.getKey() + " : " + entry.getValue());11 }

使用Java 8之后还可以使用lambda表达式简化一下代码

1         Comparator
> comparator = (o1, o2) -> o1.getKey().compareToIgnoreCase(o2.getKey());2 3 Collections.sort(mapList, comparator);4 for (Map.Entry
entry : mapList) {5 System.out.println(entry.getKey() + " : " + entry.getValue());6 }

 

转载于:https://www.cnblogs.com/snowater/p/8125657.html

你可能感兴趣的文章
linux上搭建nginx+php+mysql环境详细讲解
查看>>
RemoveDuplicatesFromSortedArrayI II,移除有序数组里的重复元素以及移除数组里的某个元素...
查看>>
Minimum Depth of Binary Tree,求树的最小深度
查看>>
解决Web部署 svg/woff/woff2字体 404错误
查看>>
fiddler 抓取 nodejs
查看>>
1.Nginx服务应用
查看>>
MySQL基础
查看>>
凹凸贴图与法线贴图
查看>>
sqlserver跨服务器数据库sql语句
查看>>
设计模式-结构型模式,外观模式(6)
查看>>
Trie模版
查看>>
2018HDU多校训练-3-Problem F. Grab The Tree
查看>>
2016012032四则运算网页版结对项目报告
查看>>
边工作边刷题:70天一遍leetcode: day 45
查看>>
淘宝专业版改基础版方法
查看>>
[转]ARM Pipeline
查看>>
[转]Blocking Code Injection on iOS and OS X
查看>>
自动化测试
查看>>
vue $options 获取自定义属性
查看>>
Vue避免 v-if 和 v-for 用在一起
查看>>