stream()相关

在Java中,stream()方法是集合框架的一部分,允许集中处理数据集合。

1. stream() 方法

stream() 方法可以在任何实现了Collection接口的集合上被调用(例如,ListSet等),它会返回一个表示该集合的顺序流。

 

ini

代码解读

复制代码

List<DealerSalerMore> dealerSalerMoreList = // 初始化列表 Stream<DealerSalerMore> stream = dealerSalerMoreList.stream();

2. 流操作的分类

流的操作主要分为两类:中间操作 和 终端操作

中间操作(Intermediate Operations)

中间操作返回一个新的流,可以进行链式调用。这些操作是惰性求值的,即只有在终端操作执行时才会执行这些操作。常见的中间操作包括:

  • filter:用于过滤流中的元素。该函数返回 true 或 false
     

    ini

    代码解读

    复制代码

    Stream<DealerSalerMore> filteredStream = stream .filter(dealer -> "0".equals(dealer.getState()));
  • map:用于将流中的每个元素转换为另一种类型,接收一个 Function
     

    ini

    代码解读

    复制代码

    Stream<String> idStream = filteredStream .map(DealerSalerMore::getDealerId);
  • sorted:对流的元素进行排序。
     

    ini

    代码解读

    复制代码

    Stream<DealerSalerMore> sortedStream = stream .sorted(Comparator.comparing(DealerSalerMore::getSomeProperty));
  • distinct:去除流中重复的元素。
     

    ini

    代码解读

    复制代码

    Stream<DealerSalerMore> distinctStream = stream .distinct();
终端操作(Terminal Operations)

终端操作产生一个结果,或者产生副作用。一旦执行了终端操作,流就被消耗,无法再使用。常见的终端操作包括:

  • collect:将流中的元素收集到集合中,通常用于返回一个列表、集合或映射。

     

    ini

    代码解读

    复制代码

    List<String> dealerIdList = idStream .collect(Collectors.toList());
  • forEach:对流中的每个元素执行操作。

     

    arduino

    代码解读

    复制代码

    idStream.forEach(System.out::println);
  • reduce:对流中的元素进行归约操作,将多个元素合并成一个结果。

     

    ini

    代码解读

    复制代码

    Optional<String> result = idStream .reduce((s1, s2) -> s1 + ", " + s2);
  • count:返回流中元素的数量。

     

    ini

    代码解读

    复制代码

    long count = stream.count();

综合示例

 

less

代码解读

复制代码

List<A> aList = aMapper.getAllAByAId(map.get("AId")); List<String> tempAList = aList.stream() .filter(f -> "0".equals(f.getState()) || "0".equals(f.getDr())) // 过滤 .map(A::getAName) // 提取 AName .collect(Collectors.toList()); // 收集到 List<String>

例子表:

 

代码解读

复制代码

| AName | State | Dr | | Name1 | 0 | 1 | | Name2 | 1 | 0 | | Name3 | 1 | 1 | | Name4 | 0 | 0 |

  • 过滤获得status等于0或者dr等于0的值
 

代码解读

复制代码

| Name1 | 0 | 1 | | Name2 | 1 | 0 | | Name4 | 0 | 0 |

  • 保留AName
 

代码解读

复制代码

| Name1 | | Name2 | | Name4 |

  • 重新转Collection
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值