java stream流对list分组
时间: 2023-10-31 12:56:34 浏览: 108
在Java中,可以使用Stream流对List进行分组操作。下面是一个示例代码:
```
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List<Student> studentList = new ArrayList<Student>();
studentList.add(new Student(1, "张三", "男", 20, 2));
studentList.add(new Student(2, "李四", "男", 21, 1));
studentList.add(new Student(3, "王五", "女", 19, 1));
studentList.add(new Student(4, "赵六", "男", 19, 1));
studentList.add(new Student(5, "王大锤", "男", 20, 2));
Map<Integer, Long> map = studentList.stream()
.collect(Collectors.groupingBy(Student::getClassNumber, Collectors.counting()));
for(Map.Entry<Integer, Long> entry : map.entrySet()){
System.out.println("班级编号:" + entry.getKey() + ", 人数:" + entry.getValue());
}
}
}
```
在这个示例中,首先创建了一个包含学生信息的List对象`studentList`。然后,使用`Collectors.groupingBy`方法将学生按班级进行分组,并使用`Collectors.counting`方法统计每个班级的人数。最后,通过遍历`map`中的键值对,打印班级编号和人数。
请注意,这里的`Student`类是一个自定义的学生类,包含了学生的各种属性。你可以根据实际需求修改这个类的属性和方法。
阅读全文