Java的stream流常用的一些方法

疯一样的男子
疯一样的男子
发布于 2022-08-18 / 2 阅读
0
0

Java的stream流常用的一些方法

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


评论