写个stream group by 求和的示例
时间: 2023-09-27 21:11:41 浏览: 47
好的,这里是一个stream group by 求和的示例:
假设有以下的int数组:
int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
我们可以使用Java 8 的Stream API来对这个数组进行分组(group by)和求和(sum)操作,代码如下所示:
Map<Integer, Integer> sumByGroup = Arrays.stream(nums)
.boxed()
.collect(Collectors.groupingBy(num -> num % 2, Collectors.summingInt(Integer::intValue)));
上述代码将数组中的数字按照奇偶性分组,并且分别求和。它会输出一个Map,其中key是0或1(表示偶数或奇数),value是该组数字的和。在这个示例中,输出如下:
{0=30, 1=25}
其中0组的和为30,1组的和为25。
相关问题
stream group by 求和
`GROUP BY` 用于将结果集按照一个或多个列进行分组,并且可以使用聚合函数对每个分组进行计算。
如果你想要对一个分组后的结果集进行求和,可以使用 `SUM` 聚合函数。以下是一个示例 SQL 查询:
```sql
SELECT column1, SUM(column2)
FROM table_name
GROUP BY column1;
```
这条 SQL 语句将 `table_name` 表按照 `column1` 列进行分组,并对每个分组的 `column2` 列进行求和。最终的结果集将包含每个不同的 `column1` 值以及对应的 `column2` 求和结果。
stream 分组求和 示例
下面是一个示例代码,展示了如何使用Java 8的Stream API对List进行分组求和的操作:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamGroupingSumExample {
public static void main(String[] args) {
// 创建一个包含多个Person对象的List
List<Person> personList = Arrays.asList(
new Person("Alice", "Sales", 5000),
new Person("Bob", "IT", 6000),
new Person("Charlie", "Sales", 4500),
new Person("David", "IT", 5500),
new Person("Eve", "HR", 4000)
);
// 按照部门分组,并对每个部门的工资进行求和
Map<String, Integer> sumByDepartment = personList.stream()
.collect(Collectors.groupingBy(Person::getDepartment,
Collectors.summingInt(Person::getSalary)));
// 输出每个部门的工资总和
sumByDepartment.forEach((department, sum) ->
System.out.println(department + ": " + sum));
}
}
class Person {
private String name;
private String department;
private int salary;
public Person(String name, String department, int salary) {
this.name = name;
this.department = department;
this.salary = salary;
}
public String getName() {
return name;
}
public String getDepartment() {
return department;
}
public int getSalary() {
return salary;
}
}
```
在这个示例中,我们创建了一个包含多个Person对象的List。然后,我们使用Stream API的groupBy函数将Person对象按照部门进行分组,使用mapToInt函数对每个部门的工资进行求和。最后,我们通过forEach方法输出每个部门的工资总和。
输出结果将会是:
```
Sales: 9500
IT: 11500
HR: 4000
```
这就是使用Java 8的Stream API对List进行分组求和的示例。