java - 映射<S,S> 到列表<S>

标签 java lambda java-8 java-stream

我正在尝试转换 Map<String, String>List<String>使用 lambda。

本质上,我想将键和值与 '=' 连接起来之间。这看起来微不足道,但我找不到如何去做。

例如

Map<String, String> map = new HashMap<>();
map.put("a1","b1");
map.put("a2","b2");
map.put("a3","b3");

// Lambda

// Result contains ["a1=b1", "a2=b2", "a3=b3"]
List<String> result;

最佳答案

首先,如果需求只是使用 Lambda,您可以将普通代码放入一个函数中并调用它:

Function<Map<S,S>,List<S>> function = (Map<S,S> map) -> {
    // conventional Java code
    return result;
};
List<S> list = function.apply(inputMap); 

您的意思可能是您想使用 Java 8 的流库。一个流总是包含一个流源,然后是一些中间操作,最后是构造计算结果的最终操作。

在您的例子中,流源是映射的条目集,中间操作将每个条目转换为字符串,最后的最终操作将这些字符串收集到一个列表中。

List<S> list = 
    map.entrySet().stream()
       .map(e -> e.getKey().toString() + 
            "=" + e.getValue().toString())
       .collect(Collectors.toList());

关于java - 映射<S,S> 到列表<S>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30147975/

相关文章:

java - 如何使用 java 8 从日期时间间隔中获取析取

javascript - Selenium: "is not clickable at point"如何等待所有脚本加载完毕

Java : Display list of directories and files on the server through a web page

java - struts 1 中的响应过滤器

java - 在 Java 8 中将匿名内部方法转换为 Lambda

c# - 我可以将局部变量作为常量而不是闭包引用捕获到 LINQ 表达式中吗?

javascript - QML 文件中是否支持 Lambda?

java - Eclipse 中 Java 8 换行 RegEx 转义字符的问题

java - 更改 networkaddress.cache.ttl 的 ttl 不起作用

java - JpaRepository 查找左连接无限循环