首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 高效编程·HashMap 排序

Java 高效编程·HashMap 排序

作者头像
数媒派
发布于 2022-12-01 06:57:32
发布于 2022-12-01 06:57:32
85000
代码可运行
举报
文章被收录于专栏:产品优化产品优化
运行总次数:0
代码可运行

HashMap 排序

HashMap 的值是没有顺序的,它是按照 key 的 HashCode 来实现的,对于这个无序的 HashMap 我们要怎么来实现排序呢?

根据 key 排序

TreeMap 基于红黑树实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序。Comparator 可以对集合对象或者数组进行排序的比较器接口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Map<String, String> map = new TreeMap<>(Comparator.naturalOrder());
map.put("b", "bbb");
map.put("d", "ddd");
map.put("c", "ccc");
map.put("a", "aaa");

Set<String> keySet = map.keySet();
for (String key : keySet) {
    System.out.println(key + ":" + map.get(key));
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a:aaa
b:bbb
c:ccc
d:ddd

根据 value 排序

对 value 排序我们就需要借助于 Collections 的 sort(List<T> list, Comparator<? super T> c) 方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是有一个前提条件,那就是所有的元素都必须能够根据所提供的比较器来进行比较。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
HashMap<String, Integer> countMap = new HashMap<>();
// 升序比较器
Comparator<Map.Entry<String, Integer>> valueComparator = Comparator.comparingInt(Map.Entry::getValue);
// map 转换成 list
List<Map.Entry<String, Integer>> list = new ArrayList<>(countMap.entrySet());
// 排序
list.sort(valueComparator);
for (Map.Entry<String, Integer> entry : list) {
    System.out.println(entry.getKey() + ":" + entry.getValue());
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
排序算法
由多到少依次输出元素的出现次数。下面每一行代码都有对应的标注。另附kotlin版 public class Test { public static void main(String args[]) { //创建字符串数组 String[] example = {"abc", "abc", "def", "abc", "def", "aaa"}; //创建HashMap,保存元素和出现次数 HashMap<String, Integer
ppjun
2018/09/05
3580
4个主要的map实现类介绍
map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):
全栈程序员站长
2022/09/02
3200
java map遍历、排序,根据value获取key
若要取 map 中 value 的最大值 或 与之对应的 key(整型或浮点型):可利用list
Krry
2018/09/10
8.8K0
java map()_java之map的基本介绍
在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):
全栈程序员站长
2022/09/08
7680
Java编程的一些小技巧-----基础语法篇(2)
比如上面的代码,只跳出了最里面的一层循环,如果要跳出两层循环,应该咋办?可以用break+label的语法,例子如下
秃头哥编程
2019/06/04
5930
JAVA零基础小白学习免费教程day14-Set&HashMap
java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。
张哥编程
2024/12/13
1280
java.util.Map API
Map集合是有Key和Value的,Collection集合是只有Value。Collection集合底层也是有Key和Value,只是隐藏起来。
HLee
2021/02/08
7800
java.util.Map API
Java从入门到精通八(Java数据结构--Map集合)
接口很多是定义一些未实现的方法,在jdk8之前接口是不可以写实现方法的,但是后面的版本是可以实现的。并且定义的一些没有实现的方法是供后面的实现类使用的。 通常接口也就定义了一些方法。 jdk8后面使用到了default修饰,使得接口可以实现方法。
兰舟千帆
2022/07/16
8690
Java从入门到精通八(Java数据结构--Map集合)
map排序,根据key给map排序,根据value给map排序
1-------Franch 2-------Canada 3-------China
IT云清
2019/01/22
1.8K0
JavaSE(八)之Map总结
上一篇是总结了Collection接口的各种实现类,这一篇我将分享的是Map的总结,希望大家点评! 一、Map接口 1.1、为什么Collection不能满足集合的所有功能?   Collection接口下的所有集合容器,它们可以存储对象,但是对象之间如果存在一定的关系,这时只要存储到Collection下面的任何一个集合中,中关系就会丢失。   例如:人和住址:(  张三--------北京、 李四--------上海)        丈夫和妻子:(唐伯虎-------秋香)       人和别名:(旺财
用户1195962
2018/01/18
6210
JavaSE(八)之Map总结
JAVA map排序实现
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。
全栈程序员站长
2022/09/14
6770
Java map集合深入学习
java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。
全栈程序员站长
2022/09/02
6430
Java集合类的使用心得
常用结构:SortedSet是个接口,TreeSet是它的唯一实现类,其中的元素是有序的。
matt
2022/10/25
5150
12:集合map、工具类
一、map集合 Map:一次添加一对元素。Collection 一次添加一个元素。 Map也称为双列集合,Collection集合称为单列集合。 其实map集合中存储的就是键值对(结婚证书), map
六月的雨
2018/05/14
1K0
Java集合框架
1.集合和数组的区别 数组长度是固定的,集合长度是可变的 数组可以存储基本类型和引用类型,集合只能存储引用类型 2.Collection体系集合 List接口的特点: 有序、有下标、元素可重复 Set接口的特点: 无序、无下标、元素不能重复 2.1Collection父接口 特点:代表一组任意类型的对象,无序、无下标、不能重复 方法: boolean add(Object obj) //添加一个对象 boolean addAll(Collection c) //将一个集合中的所有对象添加到此集合中 void
用户7353950
2022/06/23
2.5K0
Java8新特性stream流
Java8新特性stream流 一、包装数据类型 @Test public void main22() { List<Integer> list = new ArrayList<Integer>(){{ add(7); add(5); add(1); add(2); add(8); add(4); add(3); add(6); add(3); add(6); add(3); add(6); }}; // 过滤 List<Int
半月无霜
2023/03/03
5110
Java Map集合的详解「建议收藏」
如果程序中存储了几百万个学生,而且经常需要使用学号来搜索某个学生,那么这个需求有效的数据结构就是Map。
全栈程序员站长
2022/09/02
7690
hashmap顺序遍历_遍历排序
hashmap元素排序 想要hashmap中的元素有序可以使用linkedHashMap。
全栈程序员站长
2022/09/30
1.6K0
JavaSE集合(八)之Map
前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族。以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚。 这次我将总结的非常详细。程序员的道理里,我们风雨无阻! 一、Map接口 1.1、Map概述   Map 的字面翻译是映射(地图就是一种映射)。将键映射到值的对象,一个映射不能包含重复的键(如果有添加有重复的键,后面的会覆盖掉前面的,但是如果是自定义类型必须重写hashCode()和equals()方法),每个键最多只能映射到
用户1195962
2018/01/18
1K0
JavaSE集合(八)之Map
Java的HashMap中的常用方法总结遍历HashMap打印HashMap根据HashMap的value进行排序
HashMap在编程中是一个非常有用的工具,使用的频率很高,所以本文简单总结一下hashmap的常用方法
desperate633
2018/08/22
1.7K0
相关推荐
排序算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档