我想遍历账户列表,并使用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;
}
下面的代码可以做到这一点:
accountsList.stream()
.filter(a -> a != null && a.getAmount != null)
.mapToDouble(Account::getAmount)
.sum();
stream()
创建流
filter
确保不会抛出任何NPEmapToDouble(Account::getAmount)
将流中的每个
帐户
替换为帐户#金额
sum()
对值求和。
从列表中创建一个流,映射到一个双值列表
total=accountList.stream()
.filter(account ->account!=null&&
account.getAmount()!=null).mapToDouble(Account::getAmount)
.sum()
我有一个简单的课程: 并有一个List:
我想用Java8lambda表达式在java列表中找到max值,所以,我有一个类叫TicketMaster,项表是TicketMasterLog,在TicketMasterLog类中我有StatusMaster类的statusId引用列,所以这里我想在TicketMasterLog列表中找到max statusId,下面我给出我的代码请参考 而TicketMasterItem表是 因此,在列表中,
我有一个jUnit测试断言两个双重对象与以下: 这很好,然后我决定将其改为使用原语double,结果发现它已被弃用,除非还提供了delta。 所以我想知道的是,在这个assertEquals中使用双对象或原语类型有什么区别?为什么使用没有增量的对象是可以的,但是使用没有增量的原语是不可取的?Java是否在后台做了一些已经考虑了默认增量值的事情? 谢谢
我有一个列表,像
我有一份包含订单项目列表的订单 如果在这个列表中我有以下项目 我想计算订单所有者名称相同的值之和。 e、 g.如果所有者名称为“John”,则返回417.00,如果名称为“Doe”,则返回19.00。 我怎么能通过小溪Java呢?非常感谢