当前位置: 首页 > 知识库问答 >
问题:

如何使用stream API按指定的顺序对映射进行排序?[关闭]

华振
2023-03-14

映射需要在降序时按值排序,然后在升序时按键排序。finalizedexecution方法将与作为参数添加到方法中的两个映射相关的值之和添加到方法中,并将其作为自己的值存储。

private static void FinalizedProcedure(Map<String, Integer> reception, Map<String, Integer> deliverance) {

        System.out.println("User count: " + FinalizedExecution(reception, deliverance).size());

        FinalizedExecution(reception, deliverance).entrySet()
                .stream()
                .sorted(Map.Entry.comparingByKey())
                .sorted((e,b) -> Integer.compare(b.getValue(),e.getValue()))
                .forEach(act -> System.out.printf("%s - %d%n", act.getKey(), act.getValue()));

    }

输出应该是:伯格达到了产能!用户数:3克拉克-8马克-9凯文-1

然而我得到的是:伯格达到了容量!用户数:3马克-9克拉克-8凯文-1

我做错了什么?

共有1个答案

太叔昊穹
2023-03-14

您应该使用*一个比较器进行整个排序

像这样:

    var m = Map.of("Mark", 9, "Kevin", 1, "Clark", 8);
    m.entrySet().stream()
       .sorted(Map.Entry.<String, Integer>comparingByValue().reversed()
            .thenComparing(Map.Entry.comparingByKey()))
       .forEach(act -> System.out.printf("%s - %d%n", act.getKey(), act.getValue()));

这给了我以下结果:

马克-9

克拉克-8

凯文-1

这和你得到的输出是一样的,我不知道为什么你认为它是错误的。

 类似资料:
  • 问题内容: 我在这里有点深,我希望这实际上是可能的。 我希望能够调用一个函数,该函数将按字母顺序对列表中的所有项目进行排序。 我一直在寻找通过jQuery UI进行排序,但事实并非如此。有什么想法吗? 问题答案: 你 不会 需要jQuery来做到这一点… 易于使用…

  • 我有一个数据库表,我想对其进行筛选,然后按相反(降序)顺序进行排序。我如何在类似于以下内容的速度流中表达: 我希望我的SQL查询能够通过速度优化,因此我不能使用匿名lambda。

  • 当我们运行一个Mongo find()查询而没有指定任何排序顺序时,数据库内部使用什么对结果进行排序? 根据mongo网站上的文件: 在不带参数的情况下执行find()时,数据库将按前向自然顺序返回对象。 当t1和T2之间没有其他写操作时? 当t1和T2之间有新的写操作时? 在t1和T2之间添加了新索引? 我在一个临时数据库上运行了一些测试,我得到的结果是相同的(是的)所有3个案例--但我想确定,

  • 问题内容: 我正在为我的通讯录应用程序实现排序功能。 我想排序一个。是一个包含四个字段的类:姓名,家庭电话,手机号码和地址。我想继续。 如何编写自定义排序功能来做到这一点? 问题答案: 这是有关订购对象的教程: Java教程-集合-对象排序 尽管我会举一些例子,但我还是建议你阅读它。 有多种排序方式。如果要定义自然的(默认)排序,则需要让实现。假设你想默认在上进行排序name,然后执行(为简单起见

  • 问题内容: 我有一个对象数组,这些对象的属性称为“ CODE”。 如何通过自定义顺序对数组进行排序,例如: 尝试各种方法均未成功。请帮忙。 问题答案: 您可以将函数与函数一起使用。

  • 问题内容: 我有一个包含国家/地区名称的对象。如何按字母顺序对列表进行排序? 问题答案: 假设这些是字符串,请使用方便的静态方法sort……