Java 8流减少Map

亚当·博扎伊

我有一个包含多个条目的LinkedHashMap。我想在第一步中将多个条目减少为单个条目,而不是将其映射为单个String。例如:我从这样的地图开始:

{"<a>"="</a>", "<b>"="</b>", "<c>"="</c>", "<d>"="</d>"}

最后,我想得到一个像这样的字符串:

<a><b><c><d></d></c></b></a>

(在这种情况下,字符串按顺序包含键,而不是按相反顺序包含值。但这并不重要,我想要一个通用的解决方案)

我想我需要map.entrySet()。stream()。reduce(),但是我不知道在reduce方法中该写什么,以及如何继续。

格德约翰

由于要通过将键与键和值与值连接来减少条目,因此,您要查找的标识是键和值都为空字符串的条目。

String reduceEntries(LinkedHashMap<String, String> map) {
    Entry<String, String> entry =
        map.entrySet()
           .stream()
           .reduce(
               new SimpleImmutableEntry<>("", ""),
               (left, right) ->
                   new SimpleImmutableEntry<>(
                       left.getKey() + right.getKey(),
                       right.getValue() + left.getValue()
                   )
           );
    return entry.getKey() + entry.getValue();
}

Java 9添加了Map.entry(key, value)用于创建不可变条目的静态方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章