对List<List<Integer>>中的子列表进行流操作
Perform stream operation on the sub-lists inside a List<List<Integer>>
我有一个 Student
class:
public class Student {
private String name;
private String marks;
private List<Integer> percent;
}
在另一个class中有一个定义如下的列表:
stud1.setMarks("20");
stud1.setName("Sumit");
stud1.setRollNo(1);
stud1.setPercent(Arrays.asList(20,30,40));
stud2.setMarks("50");
stud2.setName("Thakur");
stud2.setRollNo(2);
stud2.setPercent(Arrays.asList(25,35,45));
stud3.setMarks("70");
stud3.setName("Dhawan");
stud3.setRollNo(3);
stud3.setPercent(Arrays.asList(50,60));
List<Student> list = new ArrayList<Student>();
list.add(stud1);
list.add(stud2);
list.add(stud3);
我想对这个列表的百分比属性执行操作,通过将它乘以 10 得到 List 的输出,即
[[200,300,400],[250,350,450],[500,600]]
我尝试使用以下代码,但 flatMap 正在展平整个列表。
List<Integer> numList = list.stream().map(Student::getPercent).flatMap(List :: stream).map(j->j*10).collect(Collectors.toList());
[200, 300, 400, 250, 350, 450, 500, 600]
试试这个:
List<List<Integer>> numList = list.stream()
.map(x->x.getPercent().stream().map(p->p*10).collect(Collectors.toList()))
.collect(Collectors.toList());
您需要流式传输 和 分别收集结果:
List<List<Integer>> collect = list.stream()
.map(student -> student.getPercent().stream().map(j -> j *10).collect(Collectors.toList()))
.collect(Collectors.toList());
我有一个 Student
class:
public class Student {
private String name;
private String marks;
private List<Integer> percent;
}
在另一个class中有一个定义如下的列表:
stud1.setMarks("20");
stud1.setName("Sumit");
stud1.setRollNo(1);
stud1.setPercent(Arrays.asList(20,30,40));
stud2.setMarks("50");
stud2.setName("Thakur");
stud2.setRollNo(2);
stud2.setPercent(Arrays.asList(25,35,45));
stud3.setMarks("70");
stud3.setName("Dhawan");
stud3.setRollNo(3);
stud3.setPercent(Arrays.asList(50,60));
List<Student> list = new ArrayList<Student>();
list.add(stud1);
list.add(stud2);
list.add(stud3);
我想对这个列表的百分比属性执行操作,通过将它乘以 10 得到 List 的输出,即
[[200,300,400],[250,350,450],[500,600]]
我尝试使用以下代码,但 flatMap 正在展平整个列表。
List<Integer> numList = list.stream().map(Student::getPercent).flatMap(List :: stream).map(j->j*10).collect(Collectors.toList());
[200, 300, 400, 250, 350, 450, 500, 600]
试试这个:
List<List<Integer>> numList = list.stream()
.map(x->x.getPercent().stream().map(p->p*10).collect(Collectors.toList()))
.collect(Collectors.toList());
您需要流式传输 和 分别收集结果:
List<List<Integer>> collect = list.stream()
.map(student -> student.getPercent().stream().map(j -> j *10).collect(Collectors.toList()))
.collect(Collectors.toList());