如何迭代列表< lt; string>>并创建一个列表?
我正在制作具有list< gt; gt; gt; gt; gt; gt; gt; gt; forgary代码的工作。 StudentList
。
每个学生对象包含两个属性:
字符串名称;
list< address>地址;
class 地址
包含两个属性housenumber
和streetnumber
我想创建一个包含名称的单个列表,housenumber ,Streetnumber
。
housenumber
是一个枚举,所以我会做.toString()
和如果 null值的条件。
final List<String> finalList = new ArrayList<>();
studentList
.forEach(x -> {
x.getAddressList()
.forEach(y -> {
finalList.add(x.getName);
finalList.add(y.getHouseNumber != null ?
y.getHouseNumber.toString() : "");
finalList.add(y.getStreetNumber);
});
}
);
我已经编写了此代码,但是我希望它通过使用flatmap
来实现结果。
I am working on a legacy code which has a List<Student> studentList
.
Each student object contains two properties:
String name;
List<Address> address;
Class Address
contains two properties houseNumber
and streetNumber
I want to create a single List which contains name, houseNumber, streetNumber
.
houseNumber
is an enum so I'll do .toString()
and an if
condition for null values.
final List<String> finalList = new ArrayList<>();
studentList
.forEach(x -> {
x.getAddressList()
.forEach(y -> {
finalList.add(x.getName);
finalList.add(y.getHouseNumber != null ?
y.getHouseNumber.toString() : "");
finalList.add(y.getStreetNumber);
});
}
);
I have written this code but I want it to achieve the result by using flatMap
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
对于每个学生,创建一个名称流和一个包含每个adress
housenumber
&amp; amp; amp;的平面流。Streetnumber
contert此流,Flatmap和Finaly收集:For each student create a stream of name and a flatmapped stream containing each
Adress
´shouseNumber
&streetNumber
concat this streams and flatmap and finaly collect:愿您想要这个:
rs
是列表包含名称,housenumber,streetnumber的列表。May you want this:
rs
is list of list contains name, houseNumber, streetNumber.您可以使用Java流API来执行此操作。我还不了解您确切要获得的结果,因此在下面的示例中,我将不同的部分连接到一个字符串中。 (有关更多信息,请查看官方API: https://docs.oracle.com/en/java/javase/12/docs/api/java/java.base/java/java/java/java/util/util/stream/stream.html#flatmap(java.util.util.function.function.function)< /a>):
You could use the Java Stream API to do this. I haven't understood what exactly you want to obtain as a result, so in the following example I concatenate the different parts into one String. (For more info check out the official API: https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/stream/Stream.html#flatMap(java.util.function.Function)):
根据要求,这返回一个平坦的列表,重复每个学生名称&amp;每个地址的房屋编号:学生都有:
As requested, this returns a single flattened list, repeating each student name & house number for each address the student has: