java - 将 HashMap 的键和值连接到列表

标签 java string java-8 java-stream

我想将 HashMap 的键和值连接到带有“:”的字符串,并将它们转换为列表。

例子:

Map<String,String> tags = new HashMap<>();
tags.put("k1","v1");
tags.put("k2","v2");

然后我要获取字符串

k1:v1,k2:v2

我的代码是:

private String transe(Map<String, String> tags) {
    if (tags == null || tags.isEmpty()) {
        return DEFAULT_STATUS_GROUP;
    }
    List<String> tagKVList = new ArrayList<>();
    tags.forEach((key, value) -> tagKVList.add(String.join(":", key, value)));
    tagKVList.sort((tag1, tag2) -> tag1.compareTo(tag2));
    return tagKVList.stream().collect(Collectors.joining(","));
}

如何去掉局部变量tagKVList,让代码更清晰?

最佳答案

您不需要中间的 List。您可以Stream entrySetmap 每个条目到一个Stringcollect 到一个 String 就像你已经做的那样:

return tags.entrySet().stream()
                      .map(e-> String.join(":", e.getKey(), e.getValue()))
                      .sorted()
                      .collect(Collectors.joining(","));

关于java - 将 HashMap 的键和值连接到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38137839/

相关文章:

java - 以未知次数重复和连接已知字符串的更优雅方式

java - java8 forEach 循环中的条件语句

Java 8 时间 - .NET DateTime.MaxValue.Ticks 的等效项

php - 去掉不需要的标签后,我还应该对文本输入做什么?

python - 从 Python 中的字符串中获取 x 个最低有效位

java - 默认为空 lambda 比检查可能为 null 的 lambda 好还是坏?

java - 在java桌面应用程序中嵌入mysql

java - JDK6 脚本引擎中是否有 "native"支持 JSON?

Java - 获取一周中新的一天

c# - 如何计算子字符串的出现次数?