首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何根据地图集合值的大小对地图进行排序?

如何根据地图集合值的大小对地图进行排序?
EN

Stack Overflow用户
提问于 2015-06-15 11:06:28
回答 4查看 10.9K关注 0票数 13

我有一个这样的HashMap

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Map<String, List<String>> map = new HashMap<>();

map.put("USA", Arrays.asList("CA","IA","IL"));
map.put("India", Arrays.asList("MUM","CAL"));
map.put("Canada", Arrays.asList("TOR"));

我希望根据列表值的大小,按升序对地图进行排序。我怎么能这么做?

在这种情况下,我想要的钥匙是加拿大,印度,美国。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-15 11:30:03

HashMap没有保证的迭代顺序,因此您需要收集到一个LinkedHashMap,这样排序才有意义。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import static java.util.Comparator.comparingInt;
import static java.util.stream.Collectors.toMap;

Map<String, List<String>> sorted = map.entrySet().stream()
    .sorted(comparingInt(e -> e.getValue().size()))
    .collect(toMap(
        Map.Entry::getKey,
        Map.Entry::getValue,
        (a, b) -> { throw new AssertionError(); },
        LinkedHashMap::new
    )); 

抛出AssertionError是因为组合器函数是only used on parallel streams,我们不使用它。

如果您发现comparingByValue更具可读性,也可以使用它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import static java.util.Map.Entry.comparingByValue;

Map<String, List<String>> sorted = map.entrySet().stream()
    .sorted(comparingByValue(comparingInt(List::size)))
    // ... as above
票数 21
EN

Stack Overflow用户

发布于 2015-06-15 11:17:13

你有两个问题。

  1. 地图不支持排序。
  2. SortedMap不支持对值进行排序,只对键排序。

因此,使用Map或SortedMap不会对您有所帮助。您需要做的是对映射进行迭代,并将每个Entry<String, ArrayList<String>>放入一个集合中,例如列表,然后使用自定义比较对列表进行排序。请参阅此示例TreeMap sort by value或此示例Sorting LinkedHashMap

票数 1
EN

Stack Overflow用户

发布于 2021-08-03 03:28:46

您可以简单地将哈希映射到结对()列表,然后对列表进行排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val map: MutableMap<String, List<String>> = HashMap()

map["USA"] = listOf("CA", "IA", "IL")
map["India"] = listOf("MUM", "CAL")
map["Canada"] = listOf("TOR")

val sortedPairs = map.map { Pair(it.key, it.value) }.sortedBy { it.second.size }.toMap()

println("sorted List: $sortedPairs")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30853117

复制
相关文章
对map集合进行排序
今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序。
java思维导图
2018/11/30
1.8K0
对map集合进行排序
如何对Scala中集合(Collections)进行排序
文章标题: 《如何对Scala中集合(Collections)进行排序》 本文链接: http://www.iteblog.com/archives/1171 下面是一系列对 Scala 中的Lists、Array进行排序的例子,数据结构的定义如下: // data structures working with val s = List( "a", "d", "F", "B", "e") val n = List(3, 7, 2, 1, 5) val m = Map( -2 -> 5,
Albert陈凯
2018/04/04
1.8K0
如何根据函数返回的值对dart中的List进行排序
# 关于排序:如何根据函数返回的值对dart中的List进行排序 void main(){ List<POJO> pojo = [POJO(5), POJO(3),POJO(7),POJO(1)]; // fill list pojo..sort((a, b) => a.id.compareTo(b.id)); for(var i in pojo){ print(i.id); // prints list in sorted order i.e 1 3 5 7 } }
徐建国
2021/08/26
11.6K0
使用Comparable和Comparator对Java集合对象进行排序
在现实生活中,我们可能会遇到需要对集合内的对象进行排序的场景,比如,有一个游戏得分排行榜,如先按照分数的高低由高到低排序,在分数相同的情况下,按照记录创建的时间由早到新的顺序排序。
孟君
2019/09/09
5.5K0
如何使用Java8 Stream API对Map按键或值进行排序
在这篇文章中,您将学习如何使用Java对Map进行排序。前几日有位朋友面试遇到了这个问题,看似很简单的问题,但是如果不仔细研究一下也是很容易让人懵圈的面试题。所以我决定写这样一篇文章。在Java中,有多种方法可以对Map进行排序,但是我们将重点介绍Java 8 Stream,这是实现目标的一种非常优雅的方法。
字母哥博客
2020/09/23
7.2K0
如何使用Java8 Stream API对Map按键或值进行排序
如何对矩阵中的所有值进行比较?
需求相对比较明确,就是在矩阵中显示的值,需要进行整体比较,而不是单个字段值直接进行的比较。如图1所示,确认矩阵中最大值或者最小值。
逍遥之
2020/05/14
7.7K0
Java 使用Collections.reverse对list集合进行降序排序
今天无意中搜了一下Collections.reverse这个方法,结果发现有些人对它的误解蛮深的。下面是一个有百万访问量博主写的,reverse可以对指定列表进行降序排序,可是自己输出的结果都不是降序。
我是李超人
2020/08/21
2.4K0
Java 使用Collections.reverse对list集合进行降序排序
MySQL | 如何对查询结果集进行排序
数据操作语言:结果集排序 如果没有设置,查询语句不会对结果集进行排序。也就是说,如果想让结果集按照某种顺序排列,就必须使用 ORDER BY 子句。 SELECT ...... FROM ...... ORDER BY 列名 [ASC | DESC]; SELECT ename,sal FROM t_emp ORDER BY sal; SELECT empno,ename,sal,deptno FROM t_emp ORDER BY sal DESC; 排序关键字 ASC 代表升序(默认),DESC
Zkeq
2022/05/18
6.3K0
MySQL | 如何对查询结果集进行排序
JavaScript 如何对 JSON 数据进行冒泡排序?
JavaScript 是一种广泛使用的脚本语言,提供了丰富的功能和工具,用于处理和操作数据。JSON(JavaScript Object Notation)是一种常见的数据格式,用于在不同应用程序之间传输和存储数据。在本文中,我们将探讨如何使用 JavaScript 对 JSON 数据进行冒泡排序,以实现按照指定字段排序的功能。
海拥
2023/06/23
2910
python对字典进行排序
标准的python字典是无序的。即使对(键、值)对进行了排序,也无法以保留排序的方式将它们存储在dict中。
IT工作者
2022/07/07
1.9K0
如何对 1 千万个整数进行快速排序
输入:一个最多包含n个正整数的文件,每个数都小于n,其中n=10^7。如果在输入文件中有任何正数重复出现就是致命错误。没有其他数据与该正数相关联。
五分钟学算法
2019/08/13
2K0
思维导图 - 如何对信息进行分类?
绘制思维导图时,分类是最重要的,其需要满足MECE(相互独立,完全穷尽),而且需要逻辑自洽,否则就会导致结构不清晰,部分信息分类不明确 为什么要做分类? 因为人脑擅长记忆和处理结构化的信息 如何分类? 需要符合MECE(Mutually Exclusive & Collectivyly Exhaustive)原则,也就是相互独立,完全穷尽,简单来说就是不重不漏 分类集合需要逻辑自洽,比如时间关系,组合关系,关系,层次关系等 某一类信息太多的时候,也可以使用多级分类 常用分类和结构化分析模式 做信息分类
十毛
2021/07/20
6990
Go语言使用sort包对任意类型元素的集合进行排序的方法
本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法。分享给大家供大家参考。具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法: // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element wit
李海彬
2018/03/22
1.9K0
Delphi对TStrings进行排序
最近在做一个Delphi的对接第三方支付的接口,接口签名机制模仿微信的签名方式,把参数按ascii码进行排序后再加上key进行md5的加密,因为调用接口的的Post里面的参数是TStrings类型的,但是在TStrings类型里面没有Sorted排序这个方法。所以我自己重写了一个函数用于处理这个。
Vaccae
2019/07/25
1.4K0
如何对1千万个整数进行快速排序
输入:一个最多包含n个正整数的文件,每个数都小于n,其中n=10^7。如果在输入文件中有任何正数重复出现就是致命错误。没有其他数据与该正数相关联。
编程珠玑
2019/09/02
2.3K0
Go语言使用sort包对任意类型元素的集合进行排序的方法
本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法。分享给大家供大家参考。具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法: // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element wit
李海彬
2018/03/26
2.1K0
Go语言使用sort包对任意类型元素的集合进行排序的方法
本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法。分享给大家供大家参考。具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法: // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element wit
李海彬
2018/03/23
1.7K0
如何对Python中集合进行操作【增删改查】
集合分为可变集合和不可变集合两种,所以对其的增删改查操作要看集合的类型来决定。不可变的数据当然不能增删改,只能查询,可变集合则限制稍微少点。除此之外集合是无需的,所以也没有办法直接通过下标来查询,同时集合中的元素没有自己的键,也不能使用键来查询,那么应该如何操作集合这种数据类型呢?下面给大家列举出来一些操作方法。
python自学网
2021/12/04
8120
如何对Python中集合进行操作【增删改查】
LUA对Map进行排序
Lua中最常见的数据结构就是Table, 用Table表示Map很容易, 但早期Lua没有提供一个针对Map数据结构的排序方法,下面用Moonscript实现了一个Map型数据结构排序函数方法。
糖果
2019/11/20
3.4K0
点击加载更多

相似问题

如何根据地图值的参数对Map进行排序?

33

根据地图中的值对列表进行排序

24

如何根据地图的关键对地图进行排序

10

如何根据地图的价值对地图进行排序?

30

根据地图中的值对地图列表进行排序

110
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文