Java中Map按照值排序

这篇博客介绍了如何在Java中按照Map的值进行排序。通过使用Java 8的Stream API,首先将Map的键值对Entry集合排序,然后利用LinkedHashMap保持插入顺序,实现了Map按照值排序的功能。主要涉及HashMap、LinkedHashMap和Stream API的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Java中,Map最简单的实现就是HashMap,他默认是按照键来排序,有时候,我们可能会有一种需求,就是需要按照值来排序。这就需要做个小算法。

     整个算法的思路,其实很简单,就是遍历value集合,按照值的大小排序,然后组成新的Map映射。似乎有点简单,但是又有点难度,难的地方在于,Map是一个Entry<K,V>集合,单纯的比较value大小,很简单,但是要带上键,似乎有点麻烦。

    这个比较,需要考虑按照对象来比较。对象比较,就可以考虑按照对象的属性来比较,这样问题就解决了。

    show me the code:

package com.xxx.huali.hualitest;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;

public class MapValueSortDemo {
	/**
	 * { <1:10>,<4:100>,<2:5>,<3:3> }  -> [<3:3>,<2:5>,<1:10>,<4:100>] -> {<3:3>,<2:5>,<1:10>,<4:100>}
	 * @param <K>
	 * @param <V>
	 * @param map
	 * @return
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static <K extends Comparable,V extends Comparable> Map&l
### Java 中基于Map 进行排序Java 中可以利用 `Stream` API 对 `Map<String, BigDecimal>` 的条目集进行操作,从而实现依据的升序或降序排列。具体而言,先通过 `entrySet().stream()` 方法获得由映射项组成的流对象;之后借助于 `sorted(comparingByValue())` 或者 `sorted(comparingByValue().reversed())` 来指定按照 value 自然顺序或是其反转形式来进行排序逻辑[^1]。 对于最终结果收集阶段,则采用 `Collectors.toMap()` 收集器完成从流到新构建的 `LinkedHashMap` 实例的过程,以此确保迭代出来的元素遵循之前定义好的排序规则并维持插入次序的一致性。下面给出一段完整的示例代码: ```java import java.math.BigDecimal; import java.util.*; import static java.util.stream.Collectors.*; public class SortMapExample { public static void main(String[] args) { // 创建原始 map 并初始化一些数据 Map<String, BigDecimal> originalMap = new HashMap<>(); originalMap.put("A", new BigDecimal(3)); originalMap.put("B", new BigDecimal(7)); originalMap.put("C", new BigDecimal(1)); // 将 map 转换成 entry 流,并按 value 降序排序 Map<String, BigDecimal> sortedDescMap = originalMap.entrySet() .stream() .sorted(Map.Entry.comparingByValue(Collections.reverseOrder())) .collect(toMap( Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new )); System.out.println(sortedDescMap); } } ``` 此段程序展示了如何创建一个包含若干字符串-大整数键对关系的地图结构,随后运用上述提到的技术手段对其进行以数大小为基础的逆向整理工作。打印输出的结果会展示经过重新安排后的关联数组内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值