当前位置: 首页 > 知识库问答 >
问题:

使用Lambda的列表中的双倍值的总和从Java8[复制]

宋烨烁
2023-03-14

我想遍历账户列表,并使用Java8Lambda特性总结双倍信用额度。有什么想法吗?

import lombok.*;
import java.util.List;

@Data
public class Account {

private Double amount;
@Getter(AccessLevel.NONE)
private Boolean active;
private String companyCode;
private Long accountNumber;

    public Boolean isActiveAccount() {
        return active;
    }
}

我有一个账户列表,我想使用LambdaJava1.8功能来计算信用额度,我该如何去做,而不是我下面显示的传统方法?

//Lets pretend that the list has 3000 account-elements.
List<Account> accountsList = new ArrayList<>();

Double totalAmount = 0.0;

for (Account account : accountsList) {
    Double accAmountList = account.getAmount();
    if(null != accAmountList) totalAmount += accAmountList;
}

共有2个答案

狄峰
2023-03-14

下面的代码可以做到这一点:

accountsList.stream()
            .filter(a -> a != null && a.getAmount != null)
            .mapToDouble(Account::getAmount)
            .sum();

stream()创建
filter确保不会抛出任何NPE
mapToDouble(Account::getAmount)流中的每个帐户替换为帐户#金额
sum()对值求和。

司寇阳曦
2023-03-14

从列表中创建一个流,映射到一个双值列表

total=accountList.stream()
.filter(account ->account!=null&& 
account.getAmount()!=null).mapToDouble(Account::getAmount)
.sum()
 类似资料: