java - 在 Java 8 流上存储/重用中间结果

标签 java java-8 java-stream

我有一个 A 列表,要执行过滤,我需要将 A 映射到 B。但是一旦完成过滤逻辑,我仍然需要 A 进行进一步操作,所以我的问题是是否有可能实现这一目标?我能想到的一种方法是将 A 和 B 都存储到第三种类型中,所以我在处理流时都可以使用,但不确定这是否优雅并且想知道这里是否有更好的方法。或者我是否正在尝试适合使用流将方钉插入圆孔中。

List<A> a;
List<B> b = a.stream().map(i -> load(i)).filter(need A here in addition to b)

最佳答案

好吧,你总是可以传递包装成PairarrayList 的两个东西,例如:

a.stream().map(i -> List.of(load(i), i)) // List#of is java-9, replace with Pair or array
          .filter(x -> x[0]...)
          .filter(y -> /* y is List here */)

关于java - 在 Java 8 流上存储/重用中间结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49182290/

相关文章:

java - 如果空流为空,则出现 NullPointerException

java - 如何从 php 文件获取变量并在 Android Activity 中使用它?

java - org.json.JSONException : JSONArray[0] is not a JSONObject

java - Eloquent 地打印 "time between"两次打印

Java8集合Replaceall方法错误

java - 如果在 Java 流中不为空则设置一个值

java - 尝试理解 Java 8 中的 lambda 和流

java - 在 Extjs 中,在 Grid 中更新时,如果 session 超时如何重定向到登录页面?

java - 使用Java读取二进制文件并将其转换为char文件

java - 流 :Collect with supplier and accumulator