1. 集合对象求和,以BigDecimal类型求和为例
class OrderExcel{
//id
private String id;
//金额
private BigDecimal settlementAmount;
}
List<OrderExcel> list = new ArrayList();
BigDecimal sum= list.stream().map(OrderExcel::getSettlementAmount).reduce(BigDecimal.ZERO, BigDecimal::add); //金额统计
2. 如果一个集合数据是有序的,要查找集合符合条件的第一条数据,用findFirst是比较合适
Optional<Pig> pigOptional = pigs.stream()
.filter(a -> a.getAge() > 5)
.findFirst();
if (pigOptional.isPresent()){
System.out.println(pigOptional.get().getName());
}
3. 返回集合中符合条件的任意一个元素,不关心返回的是哪一个数据,只要符合条件的就行,那就用findAny,而且在并行流上,findAny限制更少
Optional<Pig> anyPig = pigs.stream()
.filter(a -> a.getAge() < 30)
.findAny();
if (anyPig.isPresent()){
System.out.println(anyPig.get().getName());
}
4. anyMatch,是否有1条age>50的数据,match是匹配的意思,返回结果是bool类型,要么匹配,要么就不匹配
Boolean anyOldThan50 = pigs.stream()
.anyMatch(a -> a.getAge() > 50);
5. allMatch,是否所有数据都满足age<50
Boolean allLittleThan50 = pigs.stream()
.allMatch(a -> a.getAge() < 50);
6. noneMatch,是否所有数据都不满足age<50
Boolean noneLittleThan50 = pigs.stream()
.noneMatch(a -> a.getAge() < 50);
部分内容知识参考地址
https://blog.csdn.net/winterking3/article/details/116294452