java | lambda表达式 的map方法到底是怎么回事?

代码是Java 8中Stream API中的一个方法签名,让我们逐步解释它:

方法签名解释

<R> Stream<R> map(Function<? super T, ? extends R> mapper)
  • <R>: 这是一个泛型标识符,表示map方法返回的Stream中元素的类型。在这里,R表示返回的元素类型。

  • Stream<R>: 这是map方法的返回类型,表示对原始Stream中的元素进行映射后得到的新的Stream。新的Stream中的元素类型为R

  • map: 这是Stream API中的一个中间操作方法,用于将Stream中的每个元素映射成另一种形式。它接受一个Function函数接口作为参数,用来定义映射逻辑。

  • Function<? super T, ? extends R> mapper:

    • Function是一个函数式接口,它描述了一个接受一个参数并产生一个结果的函数。
    • ? super T 表示接受的参数类型是TT的超类。
    • ? extends R 表示函数的返回类型是RR的子类。
    • mapper 是一个函数,它将Stream中的每个元素 T 映射成类型 R

操作解释

map 方法的作用是对Stream中的每个元素应用 mapper 函数,并将结果收集到一个新的Stream中。具体来说:

  • 对于输入的每个 T 类型的元素,mapper 函数被调用,将其映射为 R 类型的元素。
  • 最终,map 方法返回一个新的 Stream<R>,其中包含了每个元素经过映射后的结果。

示例

假设有一个 Stream<String> 表示字符串列表,我们想要将每个字符串转换为其长度。可以这样使用 map 方法:

List<String> words = Arrays.asList("apple", "banana", "cherry"); 
Stream<Integer> lengthsStream = words.stream().map(s -> s.length());

在这个例子中,map 方法接受一个 lambda 表达式 s -> s.length(),它将每个字符串 s 映射为其长度 s.length()。因此,lengthsStream 将是一个 Stream<Integer>,其中包含每个字符串的长度。

总结

map 方法是Stream API中的一个常用方法,用于将一个类型的元素映射为另一个类型,并生成一个新的Stream。它允许我们通过定义映射逻辑来转换和处理Stream中的元素,使得代码更加简洁和易于理解。

剩下的再看这个应该就很明了了:【Java干货教程】Java中Lambda表达式详解_java lamda-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值