根据值降序对 Map 进行排序 [重复]

2024-01-05

可能的重复:
如何在 Java 中对 Map 的值进行排序? https://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in-java

我正在使用映射接口从文件中读取,然后将值作为键值对存储在其中。文件格式如下

 A 34
 B 25
 c 50

我将从该文件中读取数据并将其存储为键值对,然后将其显示给用户。我的要求是以这种格式显示结果

C 50
A 34
B 25

因此,我需要按值的降序对地图进行排序。这样我就能够将这些显示为我的结果..我已阅读此内容并找到以下代码

static <K,V extends Comparable<? super V>> SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
        SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
            new Comparator<Map.Entry<K,V>>() {
                @Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
                    int res = e1.getValue().compareTo(e2.getValue());
                    return res != 0 ? res : 1; // Special fix to preserve items with equal values
                }
            }
        );
        sortedEntries.addAll(map.entrySet());
        return sortedEntries;
    }

我希望这能按升序对值进行排序,我只是想知道这种方法是否正确或者其他有效的方法对我有帮助吗?


由于您可能有重复的值,因此您不应该使用Set根本不。更改为List并对其进行排序。你的entriesSortedByValues看起来像这样:

static <K,V extends Comparable<? super V>> 
            List<Entry<K, V>> entriesSortedByValues(Map<K,V> map) {

    List<Entry<K,V>> sortedEntries = new ArrayList<Entry<K,V>>(map.entrySet());

    Collections.sort(sortedEntries, 
            new Comparator<Entry<K,V>>() {
                @Override
                public int compare(Entry<K,V> e1, Entry<K,V> e2) {
                    return e2.getValue().compareTo(e1.getValue());
                }
            }
    );

    return sortedEntries;
}

注意:在您的示例输出中,值是递减的。如果您希望它们上升,请使用e1.getValue().compareTo(e2.getValue())反而。


Example:

public static void main(String args[]) {

    Map<String, Integer> map = new HashMap<String, Integer>();
    map.put("A", 34);
    map.put("B", 25);
    map.put("C", 50);
    map.put("D", 50); // "duplicate" value

    System.out.println(entriesSortedByValues(map));
}

Output:

[D=50, C=50, A=34, B=25]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据值降序对 Map 进行排序 [重复] 的相关文章

  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • 如何实现具有LinkedHashMap类似功能的ConcurrentHashMap?

    我用过LinkedHashMap with accessOrdertrue 并同时允许最多 500 个条目作为数据的 LRU 缓存 但由于可扩展性问题 我想转向一些线程安全的替代方案 ConcurrentHashMap在这方面似乎不错 但缺
  • Spring boot 2.0.5.RELEASE和mongo 4.0连接问题

    我正在关注使用 MongoDB 访问数据教程春季网站 https spring io guides gs accessing data mongodb 我将 Mongo DB 服务器版本 4 安装为服务当我使用客户端连接到它时 它的身份验证
  • 如何在Spring Boot中初始化一次MongoClient并使用它的方法?

    您好 我正在尝试导出MongoClient在 Spring Boot 中成功连接后 我尝试在其他文件中使用它 这样我就不必每次需要在 MongoDB 数据库中进行更改时都调用该连接 连接非常简单 但目标是将应用程序连接到我的数据库一次 然后
  • 使用正则表达式验证输入字符串是否为 0-255 之间的数字

    我在将输入字符串与正则表达式匹配时遇到问题 我想验证输入数字在 0 255 之间并且长度最多应为 3 个字符 代码工作正常 但当我输入 000000 至任意长度时 显示 true 而不是 false 这是我的代码 String IP 000
  • 从字符串生成密钥?

    我需要从字符串生成一个密钥 以便我始终可以从同一字符串创建相同的密钥 具体来说是一个Key对象 这样我就可以用它来创建Cipher进而创建SealedObject 这在 Java 中可行吗 我应该考虑什么类 方法组合才能做到这一点 对于 A
  • 强制 Java 最低版本以“java -version:”运行在 Windows 上不起作用

    我想强制应用程序运行的 JVM 最低版本为 1 6 或更高版本 即 1 6 我的理解是 您可以使用 version 命令行参数来执行此操作 我尝试了一下 在Linux下似乎可以正常工作 但在Windows下却不行 LINUX 我在 Linu
  • 在java中将DataURL图像转换为图像文件

    我在我的 java servlet 中接收图像 DataURL 它看起来像 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAA 我需要将其另存为图像文件 我该怎么做 The simplest w
  • 为什么下面代码的输出是Thread[main,5,main]

    public class test1 public static void main String args TODO Auto generated method stub Thread t Thread currentThread Sys
  • Servlet 调度程序当前不可用

  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • Java字符串查找和替换的最佳方法?

    我正在寻找 Java 中字符串查找和替换的最佳方法 这是一句话 我的名字叫米兰 人们都知道我叫米兰瓦西奇 我想用 Milan Vasic 替换 Milan 弦 但在我已经有 Milan Vasic 的地方 情况不应该是这样 搜索 替换后的结
  • 获取包中声明的所有 Java 类的名称

    我正在编写一个功能 它将有助于将类放入我的程序的某个包中 另外 我只想要子类某个类的类 我需要这些类才能调用它们的静态方法 有没有一种自动的方法来做到这一点 如果是的话 速度慢吗 如果我不清楚 我想要的是这样的 ArrayList
  • 如何列出hadoop hdfs中目录及其子目录中的所有文件

    我在 hdfs 中有一个文件夹 其中有两个子文件夹 每个子文件夹大约有 30 个子文件夹 最后 每个子文件夹都包含 xml 文件 我想列出所有 xml 文件 仅给出主文件夹的路径 在本地我可以这样做apache commons io 的 h
  • ASTParser:解析绑定后查找声明节点

    我创建了一个启用了绑定的 AST 当我稍后解析绑定时 我得到了一个有效的 ITypeBinding 但是 当我想要获取绑定的声明 Node 时 它 总是返回 null 除非 ITypeBinding 在 sourceFile 中声明 这是我
  • Spring Transactional 减慢了整个过程

    我正在尝试分析我有两堂课的情况 其中一个类是 ProcessImpl 它是起点并在内部调用其他子事务 我不知道出了什么问题 processImpl正在导入一些东西并将相关数据写入数据库 Specs Spring orm版本 3 2 18 发
  • 如何列出Resources文件夹中的所有文件(java/scala)

    我正在编写一个函数 需要访问资源中的文件夹 并循环遍历所有文件名 如果这些文件符合条件 则加载这些文件 new File getClass getResource images sprites getPath listFiles 返回空指针
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 在没有EOF的情况下停止读取java中的输入

    In 问题 如何停止读取输入 我的程序继续运行 要求更多输入 public static void main String args throws Exception BufferedReader br new BufferedReader

随机推荐

  • git 不显示 unicode 文件名

    我在 Mac OS X 上使用 git 2 5 4 我的文件名包含 git 正在用转义符显示它 有没有办法让它使用unicode并显示字符 终端显然可以处理它 gt ls S l gt git status Untracked files
  • Discord.py重写获取公会成员列表

    只是想知道我将如何获取公会中所有当前成员的列表 然后将其作为消息返回 如果你想获取特定公会的成员数量 可以使用len guild members 如果您想获取列表 只需使用guild members 如果你想发送它 它可能不起作用 因为 D
  • Subversion - 是否可以禁用所有提交并使存储库只读?

    我有一个颠覆存储库 它是另一个远程存储库的镜像 我每周都会使用 svnsync 来镜像存储库 镜像存储库 本地副本 仅用于备份 我希望将镜像存储库保持为只读 即任何人都不能对此存储库提交任何更改 但他们可以使用它来读取源文件 因为它比远程存
  • 如何使用 mono 编译目录中的所有文件?

    我想用 mono 编译一个由多个文件组成的 C 应用程序 全部在 1 个目录中 我需要什么命令 Use gmcs out yourapp exe pkg dotnet cs or gmcs out yourapp exe pkg dotne
  • 从双精度数中删除 .0

    我正在尝试动态显示字符串中的数字 因此如果数字有小数 则显示它们 但如果没有 则不显示 0 示例 将 5 5 显示为 5 5 将 5 0 显示为 5 这是我到目前为止所拥有的 答案是双 double temp answer long tem
  • 如何在Python中进行指数和对数曲线拟合?我发现只有多项式拟合

    我有一组数据 我想比较哪一行最能描述它 不同阶的多项式 指数或对数 我使用 Python 和 Numpy 对于多项式拟合 有一个函数polyfit 但我没有发现这样的指数和对数拟合函数 有吗 或者另外如何解决 用于装配y A B log x
  • 显示模式对话框并获取结果

    我有一个静电WindowService帮助我创建新窗口和模式对话框的类 到目前为止 我所拥有的是这样的
  • 将 SQL Server 表加载到 pandas DataFrame 中的速度缓慢

    当使用 pyodbc 和主要函数 pandas read sql query pyodbc conn 从 SQL Server DB 加载超过 1000 万条记录时 Pandas 会变得异常缓慢 以下代码最多需要 40 45 分钟才能从 S
  • 将服务注入 Ember 对象 [不是 Ember 控制器]

    我正在尝试将 Ember 服务注入 Ember 对象 但不断收到以下错误 Assertion Failed Attempting to lookup an injected property on an object without a c
  • 想要在 iPhone 上显示 3D 模型:如何开始? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • Postgres 将子查询结果括在括号中

    不要注意所提供的查询的无用性 它只是复杂查询的简化部分 我运行查询 SELECT elem FROM SELECT id FROM data AS elem 它产生的结果是 elem 5 4 24 3 23 为什么每个值都用括号括起来 所以
  • 没有依赖于模板参数的参数

    我正在尝试执行以下操作 template
  • 捕获所有键盘输入

    首先 我知道这可以用于键盘记录器 我不打算这样做 我正在寻找一个应用程序来侦听自定义按键组合 只是为了自动执行一些非常烦人的任务 有没有办法捕获键盘的所有输入 您似乎正在寻找RegisterHotKey http msdn microsof
  • 如何使用python脚本转换dos2unix csv文件

    我想在 Windows 中使用 python 将 csv 文件转换为 dos2unix 格式 现在我正在通过将 csv 文件放置在工作区 服务器 中并在 putty 中运行命令来手动执行操作 命令 dos2unix file receive
  • Compose UIBarButtonItem 在进入视图时会稍微改变位置

    当在导航栏中使用 UIBarButtonSystemItemCompose 按钮 呈现新视图时 位置会稍微偏离并在视图进入视图后进行调整 我认为这是iOS 使用8 3版本 中的一个错误 仅在使用 UIBarButtonSystemItemC
  • Puppet 6 和模块 puppetlabs/accounts 不会以 Hiera YAML 格式创建用户帐户

    当我跑步时puppet agent test我没有错误输出 但用户没有创建 我的木偶 hira yaml 配置是 version 5 datadir etc puppetlabs code environments data hash ya
  • 使用 BFS 查找网格上对象的可能路径数

    我有一个代表网格的矩阵 并且想找出对象可以移动到的所有可能的位置 物体只能水平或垂直移动 假设下面的示例是我正在查看的网格 它表示为二维矩阵 对象是 0 是对象可以移动到的空白空间 1 是对象无法跳过或继续的墙壁 如果该对象只能水平或垂直移
  • Javascript 对象数组和 indexOf 的奇怪之处

    不太明白这里发生了什么 给定数组 arr first name Dan last name Woodson id 1 first name Jen last name Woodson id 2 first name Yoshi last n
  • 在特定变量上禁用 GCC“可能未初始化就使用”

    我在堆栈变量上收到此警告 warning object member may be used uninitialized in this function 在这种情况下 我不希望强制初始化只是为了消除警告 因为它会消耗 CPU 周期 该变量
  • 根据值降序对 Map 进行排序 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Java 中对 Map 的值进行排序 https stackoverflow com questions 109383 how to sort a mapkey value on the va