【发布时间】:2022-01-10 00:52:07
【问题描述】:
第一次对我这么简单的问题..
我有一些包含嵌套列表的对象。我通常会使用嵌套的 for 循环来对这些进行任何转换,但我热衷于探索 Java8 Streams。本质上,我正在尝试创建一个输出对象,该对象将由在每个嵌套列表中访问的字段组成。
我在下面分享了一个非常简单的示例,以及我通常如何使用增强的 for 循环来执行此操作。任何人都可以与我分享我应该如何做这将流?另外,如果我们假设这些列表中的一些将具有 [0:M] 的基数,即它们是可选列表,我将如何使流为空安全? 谢谢
// Objects below
class Qualification {
String qualificationName;
String qualificationValue;
}
class Person {
String name;
List<Qualification> qualifications;
}
class Group {
String groupId;
List<Person> people;
}
class Output {
String groupId;
String name;
String qualificationName;
String qualificationValue;
}
以下是我通常会如何执行此转换。
// Create empty list to hold the output objects
List<Output> outputList = new ArrayList<Output>();
for(Group g : groups) {
for (Person p : g.getPeople()) {
for (Qualification q : p.getQualifications()) {
// Compose new object and add to list
Output output = new Output();
output.setId(g.getId());
output.setName(p.getName());
output.setQualificationValue(q.getQualificationValue());
output.setQualificationName(q.getQualificationName());
outputList.add(output);
}
}
}
【问题讨论】:
标签: java foreach java-8 stream