www. On IT Road .com
Java Stream map() 示例
Java 将字符串流转换为整数流
在这个例子中,我们将把 Stream<String>
转换为 Stream<Integer>
。
这里映射函数Integer::valueOf()
一次从Stream 中获取一个字符串,并将String
转换为Integer
。
然后将 Integer
放入另一个流中,然后使用 Collectors.toList()
收集该流。
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> listOfStrings = Arrays.asList("1", "2", "3", "4", "5"); List<Integer> listOfIntegers = listOfStrings.stream() .map(Integer::valueOf) .collect(Collectors.toList()); System.out.println(listOfIntegers); } }
示例:找出不同的工资
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Employee> employeesList = Arrays.asList( new Employee(1, "JackLi", 100), new Employee(2, "BobRobert", 100), new Employee(3, "Lucie", 200), new Employee(4, "Tomm", 200), new Employee(5, "Edward", 300), new Employee(6, "Frank", 300) ); List<Double> distinctSalaries = employeesList.stream() .map( e -> e.getSalary() ) .distinct() .collect(Collectors.toList()); System.out.println(distinctSalaries); } }
Stream map()方法
方法语法
Stream map()
方法具有以下语法。
<R> Stream<R> map(Function<? super T,? extends R> mapper)
R
表示新流的元素类型。mapper
是一个无干扰、无状态的函数,适用于产生新值流的每个元素。- 该方法返回一个新的 R 类型对象流。
Stream
接口有另外三个类似的方法,它们在 map 操作后分别产生 IntStream
、LongStream
和 DoubleStream
。
如果在map()
操作之后创建的流被赋予返回类型,那么考虑直接使用这些函数。
IntStream mapToInt(ToIntFunction<? super T> mapper) LongStream mapToLong(ToLongFunction<? super T> mapper) DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper)
说明
map()
是一个中间操作。它返回一个新的Stream
作为返回值。map()
操作接受一个Function
,它为输入流中的每个值调用并产生一个结果值,该值被发送到输出流。- 用于转换的 mapper 函数是一个无状态函数(不存储之前处理过的对象的信息)并且只返回单个值。
map()
方法用于将X
的 Stream 转换为Y
的 Stream。- 映射流在其内容放入新的输出流后关闭。
map()
操作不会像flatMap()
操作那样扁平化流。
Java 8 Stream.map()
将 Stream<X>
转换为 Stream<Y>
。
对于每个类型为 X
的对象,都会创建一个类型为 Y
的新对象并将其放入新的 Stream
中。
日期:2020-09-17 00:10:07 来源:oir作者:oir