Java 有一个List放着实体类 这个类有一个字段是名字 想根据名字把这个List用Stream流分类并且对实体类工时字段进行统计
时间: 2023-05-24 09:03:25 浏览: 134
A:
可以使用Java 8中的Stream流和Collectors工具类来实现这个需求。
首先定义一个实体类,假设这个实体类的名字为Person,其中包含一个名字字段name和一个工作小时数字段workingHours:
```
public class Person {
private String name;
private int workingHours;
public Person(String name, int workingHours) {
this.name = name;
this.workingHours = workingHours;
}
public String getName() {
return name;
}
public int getWorkingHours() {
return workingHours;
}
}
```
然后,假设有一个List<Person> list,我们要根据名字对它进行分类并对工作小时数进行统计:
```
Map<String, Integer> result = list.stream()
.collect(Collectors.groupingBy(Person::getName,
Collectors.summingInt(Person::getWorkingHours)));
```
上述代码中,使用了groupingBy()方法将List<Person>按照Person的名字进行分组,并且使用summingInt()方法对每一组中的Person的工作小时数进行统计求和。最终得到一个Map<String, Integer>类型的结果,其中键为名字,值为对应名字的工作小时数总和。
注意:结果中可能还有一些没有名字的Person,这些Person的名字为null,我们可以在最后将它们单独分组或者过滤掉即可。
阅读全文