【发布时间】:2021-09-13 04:47:14
【问题描述】:
protected Map<String, String> test(List<String> ids) {
return ids
.stream()
.map(e -> fun1(e, "1"))
.filter(out -> out.length() == 3)
.collect(Function.identity(), ______) (what should i write here, if I want the out put of fun1, writing out here dose not work)
}
public String fun1(String one, String two) {
return one + two;
}
简单输入:("1", "23", "34", "6")
那么输出应该是 {("23", "233"), ("34","343")}
原因是“23”“34”加“3”,长度为3,然后放入map中
这是 sudo 代码,不是我使用的真实案例。所以我尝试做映射过滤然后收集到映射,但是对于那里的空白我不知道如何引用 Fun1 的输出。我知道 Java 9 有一些使用过滤的解决方案。 Java 8 的任何解决方案
【问题讨论】:
-
“使用过滤”是什么意思?你能提供示例输入和输出吗?
-
如果您尝试将
ids中的原始字符串映射到它们的fun1输出,那么您需要在运行map()时保留这两个值。否则,请跳过map,但您会错过过滤器。 -
不,没有真正的 Java 8 解决方案。在流中进行过滤,而不是在收集器中。
-
我假设你的映射中的键是映射前的值,而值部分是映射后的对象?但是一旦你使用
fun1映射它,Function.identity()指的是映射值而不是原始值。 -
你能看看输入和输出吗,这可能有助于理解我想要做什么
标签: java filter java-stream