使用java 8 lambda

时间:2017-09-26 21:29:10

标签: java lambda java-8

我想将地图{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();
        }

当然,看起来很难看,特别是我必须对逗号进行后处理。 想知道是否有更清洁的方法吗?

注意:我不需要进行代码审查,只需要知道一种不同但更清晰的方式来编写同样的东西

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

不要过度复杂化:

String str = map.toString().replace(":", "=").replaceAll("^.|.$", "");