使用lambda将Map格式化为String

我有一张包含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以键顺序获取值。

以上是 使用lambda将Map格式化为String 的全部内容, 来源链接: utcz.com/qa/402904.html

回到顶部