当前位置: 首页 > 面试题库 >

使用lambda将Map格式化为String

滑令
2023-03-14
问题内容

我有一张包含Integer键和值的地图。我需要String使用以下特定格式将其转换为key1 - val1, key2 - val2, key3 - val3。现在,我forEach用来格式化每个元素,将它们收集到一个List中,然后执行String.join();。

List<String> ships = new ArrayList<>(4);
for (Map.Entry<Integer, Integer> entry : damagedMap.entrySet())
{
    ships.add(entry.getKey() + " - " + entry.getValue());
}
result = String.join(",", ships);

有什么更短的方法吗?使用lambda会很好,因为我需要一些使用lambda的练习。


问题答案:

我认为您正在寻找这样的东西:

import java.util.*;
import java.util.stream.*;
public class Test {

    public static void main(String[] args) throws Exception {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "foo");
        map.put(2, "bar");
        map.put(3, "baz");
        String result = map.entrySet()
            .stream()
            .map(entry -> entry.getKey() + " - " + entry.getValue())
            .collect(Collectors.joining(", "));
        System.out.println(result);
    }
}

依次进行以下操作:

  • entrySet() 获取一个可迭代的条目序列
  • stream() 为此迭代创建一个流
  • map() 将该条目流转换为“键-值”形式的字符串流
  • collect(Collectors.joining(", "))使用", "分隔符将流中的所有条目连接到一个字符串中。Collectors.joining是一种返回a的方法,该方法Collector可以处理输入的字符串序列,并给出单个字符串的结果。

请注意,此处 保证顺序,因为HashMap未订购。您可能想要使用TreeMap以键顺序获取值。



 类似资料:
  • 问题内容: 有没有更好的功能方法,可以使用Java 8 lambda语法将“ key:value”形式的字符串数组转换为a ? 我现在拥有的解决方案似乎并没有真正起作用: 问题答案: 您可以修改解决方案以将的数组收集到中(而不是使用): 当然,该解决方案不能防止无效输入。也许您应该添加一个过滤器,以防拆分字符串没有分隔符: 这仍然不能保护您免受所有无效输入的侵害(例如,将导致抛出)。

  • 在生成Excel文件时,是否可以在ColdFusion代码中指定此格式?

  • 问题内容: 我想通过lambda缩进实现以下内容: 多行语句: 单行语句: 当前,Eclipse将自动格式化为以下格式: 多行语句: 单行语句: 而且我发现这真的很混乱,因为该调用直接位于的下面,而且它们之间根本没有空间。如果我可以在缩进的新行中开始lambda,并且希望该调用位于该调用的正上方,则更希望这样做。但是,唯一可以使用标准Java-8 Eclipse Formatter定制的东西是la

  • 问题内容: 我正在使用 AWS Lambda 扫描 DynamoDB 表中的数据。这是我得到的回报: 我的前端应用程序正在使用 Ember Data Rest Adapter ,它不接受此类响应。有什么办法可以获取普通的JSON格式?有一个称为NPM的模块可以将DynamoDB数据转换为普通JSON。如果可能,我正在寻找 本机解决方案 。 问题答案: AWS JavaScript SDK最近通过文

  • 问题内容: 我正在尝试获取下一个即将到来的星期五的日期,并将其格式设置为 yyyyMMDD。如果可能,我想不使用JodaTime来执行此操作。这是 我的代码: But when I run this I get the following error (running it today 20170809) 我究竟做错了什么? 编辑:我正在使用Java 8 问题答案: Big means . You

  • 到目前为止我没有问题。我可以解析html数据。我使用jsoup中的select方法,并使用“div.col-section”检索数据,这意味着我要查找类为col-section的div元素。我想用文本区打印数据。结果,我有一个巨大的一个段落,即使在网站上的真实数据是不止一个段落。那么如何像网站上一样解析数据呢?