java中如何根据对象集合中对象的某两个属性作为条件进行统计
时间: 2024-09-15 15:13:53 浏览: 36
java8实现list集合中按照某一个值相加求和,平均值等操作代码
在Java中,如果你有一个包含对象的集合,比如List或ArrayList,并且你想根据这两个对象属性进行统计,你可以使用Stream API或者遍历的方式来实现。这里给出两种常见的方法:
1. 使用Stream API:
```java
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 假设你有Person类,包含name和age属性
List<Person> people = ...; // 初始化人员列表
int countByAgeAndName = people.stream()
.collect(Collectors.groupingBy(Person::getName, Collectors.counting()))
.entrySet().stream() // 遍历每个名字及其对应的人数
.filter(entry -> entry.getKey().equals("特定名字") && entry.getValue() > "特定年龄") // 根据条件过滤
.mapToInt(Entry::getValue).sum(); // 计算满足条件的总人数
System.out.println(countByAgeAndName);
}
}
```
在这个例子中,`groupingBy()`方法用于按姓名分组,然后`counting()`计算每个组的数量。过滤条件(`filter()`)和求和(`sum()`)可以根据你的需求替换。
2. 遍历集合:
```java
public int countPeopleByAgeAndName(List<Person> people, String name, int age) {
int count = 0;
for (Person person : people) {
if (person.getName().equals(name) && person.getAge() == age) {
count++;
}
}
return count;
}
```
这个方法直接遍历集合,对于每一个元素检查条件并累加计数。
阅读全文