java list中的分组计数
时间: 2023-09-13 14:14:00 浏览: 99
java查询list分组
5星 · 资源好评率100%
假设有一个Java List,其中包含一些元素,我们想要按照某个属性对这些元素进行分组,并统计每个分组中元素的个数。
假设这个List中的元素是Person对象,每个Person对象都有一个属性age,我们想要按照age属性进行分组并统计每个分组中元素的个数,可以使用Java 8中的流式操作和Collectors工具类来实现:
```java
List<Person> persons = // 假设这是一个Person对象的List
Map<Integer, Long> countByAge = persons.stream()
.collect(Collectors.groupingBy(Person::getAge, Collectors.counting()));
System.out.println(countByAge);
```
上述代码中,使用了Collectors.groupingBy静态方法来进行分组,第一个参数是用来进行分组的属性,第二个参数是用来统计每个分组中元素个数的方法。最终得到的是一个Map对象,其中key是分组的属性值,value是该分组中元素的个数。
如果我们想要将统计结果按照分组中元素个数进行排序,可以继续使用流式操作:
```java
List<Map.Entry<Integer, Long>> sortedCountByAge = countByAge.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toList());
System.out.println(sortedCountByAge);
```
上述代码中,使用了entrySet方法将Map对象转换为一个包含所有键值对的Set对象,并使用流式操作对其进行排序,排序的依据是value值。最终使用Collectors.toList方法将排序后的结果转换为一个List对象。
阅读全文