lambda内部参数
方法签名解释
<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 表示接受的参数类型是T或T的超类。
- ? extends R 表示函数的返回类型是R或R的子类。
- 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>
,其中包含每个字符串的长度。