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 操作后分别产生 IntStreamLongStreamDoubleStream

如果在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 Stream map()方法

Java 8 Stream.map()Stream&lt;X>转换为 Stream&lt;Y>
对于每个类型为 X的对象,都会创建一个类型为 Y的新对象并将其放入新的 Stream中。

日期:2020-09-17 00:10:07 来源:oir作者:oir