java8分组求统计数量
时间: 2023-08-04 08:12:21 浏览: 55
在 Java8 中,可以使用 `Collectors.groupingBy()` 方法进行分组操作,并使用 `Collectors.counting()` 方法对每个分组计数。具体代码示例如下:
```java
List<String> list = Arrays.asList("apple", "banana", "cherry", "apple", "banana", "apple");
Map<String, Long> result = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(result);
```
输出结果为:
```
{cherry=1, banana=2, apple=3}
```
其中,`Function.identity()` 表示使用元素本身作为分组条件。`Collectors.counting()` 表示对分组后的元素数量进行计数。最终结果为一个 Map 对象,其中键为分组条件,值为该分组条件下的元素数量。
相关问题
Java8 stream 怎么分组统计
可以使用Collectors.groupingBy()方法进行分组统计。示例代码如下:
```
List<Person> people = Arrays.asList(
new Person("John", 30),
new Person("Julie", 35),
new Person("Jane", 25),
new Person("Jake", 25),
new Person("Jack", 30)
);
Map<Integer, Long> countByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge, Collectors.counting()));
System.out.println(countByAge);
```
输出结果为:
```
{25=2, 30=2, 35=1}
```
其中,Person是一个自定义的类,包含name和age两个属性。使用stream进行分组统计时,先使用groupingBy方法指定分组的属性,然后使用counting方法统计数量。
JAVA lambda 分组统计 某个属性对应的数量
在 Java 中,可以使用 Stream API 和 lambda 表达式来实现分组统计某个属性对应的数量。假设有一个包含多个对象的列表 `list`,每个对象包含属性 `key` 和 `value`,可以按照如下方式进行统计:
```java
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<>();
list.add(new HashMap<String, Object>(){{put("key", "A"); put("value", 1);}});
list.add(new HashMap<String, Object>(){{put("key", "B"); put("value", 2);}});
list.add(new HashMap<String, Object>(){{put("key", "A"); put("value", 3);}});
list.add(new HashMap<String, Object>(){{put("key", "C"); put("value", 4);}});
list.add(new HashMap<String, Object>(){{put("key", "B"); put("value", 5);}});
list.add(new HashMap<String, Object>(){{put("key", "A"); put("value", 6);}});
Map<Object, Integer> result = list.stream()
.collect(Collectors.groupingBy(e -> e.get("key"), Collectors.summingInt(e -> (int)e.get("value"))));
System.out.println(result);
}
}
```
输出结果为:
```
{A=10, B=7, C=4}
```
其中,`e -> e.get("key")` 表示按照 Map 中的 `key` 属性进行分组,`Collectors.groupingBy` 方法按照 `key` 分组,并返回一个 Map,其中键为 `key` 的属性值,值为对应分组的元素列表。然后使用 `Collectors.summingInt` 方法对每个分组内的 `value` 属性进行求和操作,最终返回一个键为 `key` 属性值,值为 `value` 属性之和的 Map。