[英]How to convert List of Objects into Map<Object, Object> using Java 8 Lambdas
[英]How to add object into a list inside of the other list using Java 8 lambdas
我对如何使用Java 8 lambda将对象添加到其他列表中的列表中有疑问。
让我解释:
我有以下对象:
类对象:
public class Course{
private String courseNae;
private List<Student> studentList;
/*gets and sets */
}
学生对象:
public class Student{
private String studentName;
private List<Subject> subjectList;
/*gets and sets */
}
主体对象:
public class Subject{
private String subjectName;
private String details;
private double value;
/*gets and sets */
}
我想这样做,但是使用java 8 lambda:
for(Class course: this.courseList){
for(Student std: course.getStudentList()){
if(std.getStudentName().equals(name)) {
std.getSubjectList()
.add(Subject.newBuilder()
.subjectName(infoName)
.details("fofofofof")
.value(10.0)
.build());
}
}
}
一般来说:-我想在课程列表中找到学生的名字
这可能是您的问题的可能解决方案:
码:
courseList.stream()
.map(Course::getStudentList)
.flatMap(Collection::stream)
.filter(student -> student.getStudentName().equals(name))
.findFirst()
.map(Student::getSubjectList)
.ifPresent(subjectList -> subjectList.add(
Subject.newBuilder()
.subjectName(infoName)
.details("fofofofof")
.value(10.0)
.build())
);
说明:
.map(Course::getStudentList)
将输入List<Course>
转换为List<Student>
的流 .flatMap(Collection::stream)
将变平给定的List<Student>
到流Student
.filter(...)
将过滤流,以便仅对名称匹配的学生进行流处理 .findFirst()
将找到给定流的第一项 .map(Student::getSubjectList)
现在会将学生流转换为List<Subject>
流 .ifPresent(...)
笔记:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.