我想遍历帐户列表,并使用 Java 8 lambda功能总结双倍信用额度。有什么想法吗?
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;
}
}
我有一个帐户列表,我想使用Lambda Java 1.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;
}
答案 0 :(得分:5)
从列表中创建一个流,映射到双值列表
total=accountList.stream()
.filter(account ->account!=null&&
account.getAmount()!=null).mapToDouble(Account::getAmount)
.sum()
答案 1 :(得分:2)
以下代码执行此操作:
accountsList.stream()
.filter(a -> a != null && a.getAmount != null)
.mapToDouble(Account::getAmount)
.sum();
stream()
创建Stream
filter
确保不会抛出任何NPE
mapToDouble(Account::getAmount)
使用Account
替换Stream
中的每个Account#amount
。<
sum()
对值进行求和。