java - 使用 Java8 Streams 从另外两个列表创建对象列表

标签 java lambda java-8 java-stream

我有以下 Java6 和 Java8 代码:

List<ObjectType1> lst1 = // a list of ObjectType1 objects
List<ObjectType2> lst2 = // a list of ObjectType1 objects, same size of lst1

List<ObjectType3> lst3 = new ArrayLis<ObjectType3>(lst1.size());
for(int i=0; i < lst1.size(); i++){
  lst3.add(new ObjectType3(lst1.get(i).getAVal(), lst2.get(i).getAnotherVal()));
}

在Java8中有什么方法可以使用Lambda以更简洁的方式处理前面的for吗?

最佳答案

Stream 与给定的 iterable/Collection 相关联,因此您不能真正并行地“迭代”两个集合。

一种解决方法是创建一个索引流,但它不一定比 for 循环有所改进。流版本可能如下所示:

List<ObjectType3> lst3 = IntStream.range(0, lst1.size())
         .mapToObj(i -> new ObjectType3(lst1.get(i).getAVal(), lst2.get(i).getAnotherVal()))
         .collect(toList());

关于java - 使用 Java8 Streams 从另外两个列表创建对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22933296/

相关文章:

java - 为什么finally block 中的变量需要是静态的

java - 过滤后无法返回子类对象的Stream

java - Lambda 和转换交集类型(Eclipse 编译器错误)

java - macOS 上的 AudioInputStream : Pop noise with Java 1. 7 和 1.8 以及 8 位 wav 文件

java - 如何创建不可序列化的子类?

java - Android 2.2 Webview 导致 OpenGL ES API 没有当前上下文(每个线程记录一次)

c# - Http Post 不工作(C# 代码工作而 java 代码不工作)

lambda 中的 Python isub

python - 如果在 jupyter notebook 中使用 python 或 pandas,如何将列中的逗号分隔字符串拆分为不同的列

java - 用于在 Spring boot Java 中记录每个请求的 Apt 设计模式