java - 使用 lambda 表达式将 hashmap 保存到 String

标签 java lambda hashmap java-8

我试图将以下代码的输出保存在一个名为“output”的字符串变量中。但是,我收到此编译错误“在封闭范围内定义的局部变量输出必须是最终的或有效的最终”。我确实尝试将输出变量声明为最终变量,但出现另一个编译错误“无法分配最终局部变量输出。它必须为空且不使用复合赋值”有什么建议吗?

        String output = "";
    map.entrySet().stream().sorted(
            Map.Entry.<String, Integer> comparingByValue()
            .reversed()
            .thenComparing(Map.Entry.comparingByKey()))
            .forEach(entry -> {
                output += entry.getKey() + " - " + entry.getValue();
            });

最佳答案

有一个收集器:joining()

String output = map.entrySet().stream()
        .sorted(Map.Entry.<String, Integer> comparingByValue()
          .reversed()
          .thenComparing(Map.Entry.comparingByKey())
         )
        .map(entry -> entry.getKey() + " - " + entry.getValue())
        .collect(joining());

您还可以添加分隔符:joining(", ")

关于java - 使用 lambda 表达式将 hashmap 保存到 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33316030/

相关文章:

java - public Gui() 在我的代码中意味着什么?它是什么?

c# - Evaluator.PartialEval 减少提供的表达式

c++ - 有没有办法将 lambda 的签名推断为 mpl 序列?

java动态判断当前执行的类

java - Java 中 HashMap 的重新哈希

java - Java中如何将两个数组映射到一个HashMap?

java - Java 代码中的 NullPointerException

java - 在同步方法中使用wait()和notify()

java - 如何从数组列表获取和设置价格?

java - 在java中合并相似的HashMaps