You can but it is not likely to make the code more readable. With Stream.forEach():
List<SubjectRole> subjectRoleList = new ArrayList<>();
subjectRoles.stream()
.forEach(t -> {
SubjectRole subjectRoleStream = new SubjectRole();
subjectRoleStream.setSubjectRole(t.getSubjectRole());
subjectRoleList.add(subjectRoleStream);
});
}
return subjectRoleList;
You could use .map()/.collect() to let the Streams API manage the List allocation:
List<SubjectRole> subjectRoleList =
subjectRoles.stream()
.map(t -> {
SubjectRole subjectRoleStream = new SubjectRole();
subjectRoleStream.setSubjectRole(t.getSubjectRole());
return subjectRoleStream;
})
.collect(Collectors.toList());
return subjectRoleList;
To get more concise, you need to somehow combine the instantiation and attribute set to one call (method or constructor). If there isn't an existing method, you could create a private helper:
private static List<SubjectRole> getSubjectRoles(List<ca.payment.simulator.model.api.SubjectRole> subjectRoles) {
List<SubjectRole> subjectRoleList =
subjectRoles.stream()
.map(t -> copy(t))
.collect(Collectors.toList());
return subjectRoleList;
}
private static SubjectRole copy(SubjectRole in) {
SubjectRole out = new SubjectRole();
out.setSubjectRole(in.getSubjectRole());
return out;
}
SubjectRole, and then doingsetSubjectRole(???) with the values from iteration? Are you just trying to make a copy list? - Rogue