关于stream流处理、增强for、Function<T,R>的个人理解

前言

很久没有写博客了,从开始实习到现在,每天都有收获,想着要记录下来,可以方便后续我自己的查看在这段实习中的收获有哪些,但是一直没有时间来写,偶尔的空余时间也只是在自己的文档中写了一下,并没有写在博客中;

为什么要写这一篇博客呢?原因很简单,第一是时间空余了下来,第二就是在就看看代码的时候看到前辈有人写过Function,之前没怎么看到过这个,索性就去看一下。

一、Function<T, R> 接口

表示接受一个类型为 T 的输入参数,返回一个类型为 R 的结果。

示例:

Function<PvostInfoEntity, Void> queryFunc = pvostInfoEntity -> {}

在例子中,T 是 PvostInfoEntityR 是 Void,意味着方法会处理一个 PvostInfoEntity 对象,但不会返回任何实际的值。

(一)、使用场景

  1. 副作用操作
    如果你需要对 PvostInfoEntity 对象进行操作,而不关心返回值(例如,打印日志、更新状态、执行某些操作),你可以使用 Function<PvostInfoEntity, Void>。这种情况比较少见,通常 Consumer<PvostInfoEntity> 更合适。

  2. 代码风格或接口要求:
    在某些情况下,特别是与特定的 API 或库集成时,你可能需要实现 Function 接口,即使返回类型是 Void。这通常取决于 API 设计的约定。

(二)、Consumer 的替代

  • Consumer<T> 接口:适用于你不需要返回值的场景。它接受一个参数并执行某些操作,但不返回结果。通常,当你只是想对一个对象执行操作而不关心结果时,Consumer 是更自然的选择:

Consumer<PvostInfoEntity> consumer = pvostInfoEntity -> {
    //操作代码
};

//与上面代码作用相同
Function<PvostInfoEntity, Void> queryFunc = pvostInfoEntity -> {
  //操作代码
}

二、Stream 流

  • 流式处理:Stream 提供了一种声明式的方式来处理集合。可以用 forEach、map 终端操作处理每个元素,类似于 Consumer

  • 例子:

list.stream().forEach(pvostInfoEntity -> {
    //操作代码
});

list.stream().map(pvostInfoEntity -> {
    //操作代码
});
  • 优势:Stream 提供了更丰富的 API 来进行复杂的集合操作(如fifter、sort、distinct等),而不仅仅是处理每个元素。

三、增强 for 循环

  • 传统迭代:增强 for 循环(或称为“for-each”循环)是一种简洁的方式来遍历集合元素。它内部的实现可能使用了迭代器,但代码更为简洁。

  • 例子:

for (PvostInfoEntity pvostInfoEntity : list) {
    //操作代码
}
  • 优势:直接、简单,但不如 Stream 灵活和强大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值