【发布时间】:2018-02-17 01:02:48
【问题描述】:
我有两个班级:
public class ClassOne {
private String id;
private String name;
private String school;
private String score; //Default score is null
..getters and setters..
}
public class ClassTwo {
private String id;
private String marks;
..getters and setters..
}
而且,我有两个上述类的列表,
List<ClassOne> listOne;
List<ClassTwo> listTwo;
如果 ID 相等,我如何比较两个列表并将 listTwo 中的标记分配给 listOne 的分数。我知道,我们可以使用两个 for 循环来做到这一点。但我想使用 Java8 流来实现它。
List<ClassOne> result = new ArrayList<>();
for(ClassOne one : listOne) {
for(ClassTwo two : listTwo) {
if(one.getId().equals(two.getId())) {
one.setScore(two.getmarks());
result.add(one);
}
}
}
return result;
如何使用 Java8 lambda 和流来实现这一点?
【问题讨论】:
-
命令式方法,即您当前的方法是可行的方法,除非您需要使用 Java-8 流实现它以从并行性中受益?
-
即便如此,您仍需要 1) 测量,2) 测量,3) 测量,然后确保将此代码转换为流版本将为您的应用程序带来好处。否则,如果您只是想使用流来使用它,那么请至少表明您这样做的尝试。
标签: arraylist lambda java-8 java-stream