lamda 对象某个属性求和
时间: 2024-09-21 12:10:58 浏览: 33
Java lambda 循环累加求和代码
在Java 8中,你可以使用Lambda表达式结合`Stream API`来对集合中某个属性求和。这里以`User`类为例,假设`User`有一个名为`age`的属性。
**求年龄总和:**
```java
List<User> userList = ... // 假设已经填充了User对象
int totalAge = userList.stream() // 创建流
.mapToInt(User::getAge) // 使用lambda表达式提取每个User的age作为IntStream
.sum(); // 求和并返回结果
```
这段代码中,`User::getAge`是方法引用,它表示对`User`对象的`getAge()`方法应用,从而得到一个IntStream,然后调用`sum()`方法计算所有年龄的总和。
**使用Lambda创建映射:**
```java
List<User> userList = ... // 假设已经填充了User对象
Map<Integer, User> userMap = userList.stream() // 创建流
.collect(Collectors.toMap(User::getId, // 使用lambda提取key(id)
a -> a, // 提取value(a本身,因为默认构造函数)
(k1, k2) -> k1)); // 合并策略,这里简单地选择第一个元素,即k1
// 这里k1, k2是两个键,如果它们的id相同,只保留第一个
```
在`toMap`操作中,第一个Lambda表达式用于提取键,第二个用于提取或转换值,第三个是合并冲突键的策略。
阅读全文