class A{
List<B> bList;
}
class B {
String name;
}
List<A> list = new ArrayList<>;
如上我们需要得到list里所有的BbList的值
**方法一:**可以遍历A,用新的数组去接受所有bList(这种情况针对一种嵌套其实还好,但是有多层其实就不太好办了)
**方法二:**使用reduce:所以可以使用java8 stream Api的reduce
例子如下:
@Data
public class Student implements Serializable {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student() {
}
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Grades {
private String name;
private List<Student> students;
}
public class ListList {
public static void main(String[] args) {
Student s1 = new Student("zs", 1);
Student s2 = new Student("ls", 2);
ArrayList<Student> list1 = Lists.newArrayList();
list1.add(s1);
list1.add(s2);
Student s3 = new Student("ww", 3);
Student s4 = new Student("yl", 4);
Student s5 = new Student("zb", 5);
ArrayList<Student> list2 = Lists.newArrayList();
list2.add(s3);
list2.add(s4);
list2.add(s5);
ArrayList<Student> list3 = Lists.newArrayList();
list3.add(s3);
list3.add(s4);
list3.add(s5);
ArrayList<Grades> gradeList = Lists.newArrayList();
Grades grade1 = Grades.builder().name("一年级").students(list1).build();
Grades grade2 = Grades.builder().name("二年级").students(list2).build();
Grades grade3 = Grades.builder().name("三年级").students(list3).build();
gradeList.add(grade1);
gradeList.add(grade2);
gradeList.add(grade3);
List<Student> students = gradeList.stream().map(Grades::getStudents).reduce((v1, v2) -> {
v1.addAll(v2);
return v1;
}).get();
System.out.println(students);
System.out.println("===========================================");
List<String> name = gradeList.stream().map(Grades::getStudents).reduce((v1, v2) -> {
v1.addAll(v2);
return v1;
}).get().stream().map(Student::getName).collect(Collectors.toList());
System.out.println(name);
}
}
[com.samubo.Student{name='zs', age=1}, com.samubo.Student{name='ls', age=2}, com.samubo.Student{name='ww', age=3}, com.samubo.Student{name='yl', age=4}, com.samubo.Student{name='zb', age=5}, com.samubo.Student{name='ww', age=3}, com.samubo.Student{name='yl', age=4}, com.samubo.Student{name='zb', age=5}]
===========================================
[zs, ls, ww, yl, zb, ww, yl, zb, ww, yl, zb, ww, yl, zb]