java - 使用 java 8 lambda 将映射转换为字符串

标签 java lambda java-8

<分区>

我想将 map {key:column, key1:column1} 转换为 csv 字符串“key=column,key1=column”。

我正在获取条目映射并从键和值构造字符串。这是我拥有的:

        entry.forEach(entryVal ->{
            result.append(entryVal.getKey() + "=" + entryVal.getValue());
            result.append(',');
        });
        int index = result.lastIndexOf(",");
        if(index == result.length()-1){
            result.deleteCharAt(index);
            return result.toString();
        }

当然,看起来很丑,尤其是我必须对逗号进行后处理。 想知道是否有更简洁的方法来执行此操作?

注意:我不需要代码审查,只需要知道一种不同但更简洁的方式来编写相同的东西,如果可能的话

最佳答案

这可以使用joining 收集器来完成:

String str = map.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue())
                                    .collect(Collectors.joining(","));

关于java - 使用 java 8 lambda 将映射转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46436136/

相关文章:

java - 启用 JConsole 远程监控是否会影响生产中的系统性能?

Java 8 模式匹配?

python - python 中是否有与 Linq.Expressions.Expression 等效的东西?

java - 从 Java 8 升级到 Java 11 - 包 sun.util 不存在

java - 如何在 Optional.map() 中使用方法引用

java - Java8 中的 MapReduce 输出排序

java - 动态添加行时的 JPanel/Component 扩展 - Java Swing

java - 读取子目录创建日期

java - 为什么在authenticate(..)上返回的Authentication对象仍然需要包含凭据?

c++ - 广义 lambda 捕获的宏