廖雪峰Java16函数式编程-2Stream-4map

Posted csj2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了廖雪峰Java16函数式编程-2Stream-4map相关的知识,希望对你有一定的参考价值。

1. map()简介

Stream.map()是一个Stream的转换方法,把一个stream转换为另一个Stream,这2个Stream是按照映射函数一一对应的。
所谓map操作,就是把一种操作运算映射到序列的每个元素上。
例如:f(x)=x^2,对x计算它的平方,把这个函数映射到一个序列1, 2, 3, 4, 5,就得到另一个序列1, 4, 9, 16, 25。这2个Stream是按照映射函数一一对应的
技术图片

    Stream<Integer> s = Stream.of(1, 2, 3, 4, 5);
    Stream<Integer> s2 = s.map((n)->n*n);

2. map过程

map()接收的Function的接口,负责把1个T类型转换为R类型

    <R> Stream<R> map(Function<? super T, ? extends R> mapper);
    @FunctionalInterface
    public interface Function<T, R> 
        R apply(T t);
    

3. map示例

3.1 使用map获取全部大写的Stream

public class StreamMapSample 
    public static void main(String[] args)
        String[] array = "Stream API supports functional-style operation".split(" ");
        Stream<String> stream = Arrays.stream(array);
        stream.map(String::toUpperCase).forEach(System.out::println);
    

技术图片

3.2 将String类型转换为Person类型

import java.util.Arrays;
import java.util.stream.Stream;

class Person
    String name;
    char gener;
    public Person(String name,char gender)
        this.name = name;
        this.gener = gender;
    
    public String toString()
        return "Person( "+name+", "+gener+" )";
    

public class StreamMapSample2 
     public static void main(String[] args)
         String[] inputs = "Bob,M","Alice,F","Time,M","Lily,F";
         Stream<String> names = Arrays.stream(inputs);
         Stream<Person> persons = names.map((s)->
             int n = s.indexOf(",");
             String name = s.substring(0,n);
             char gender = s.charAt(n+1);
             return new Person(name,gender);
         );
         persons.forEach(System.out::println);
     

技术图片

4. 总结:

map()方法:

  • 将一个Stream的每个元素映射成另一个元素并生成一个新的Stream
  • 可以将一种元素类型转换成另一种元素类型

以上是关于廖雪峰Java16函数式编程-2Stream-4map的主要内容,如果未能解决你的问题,请参考以下文章

python学习之4函数式编程(廖雪峰)

python函数式编程-------python2.7教程学习廖雪峰版

廖雪峰的Python系列教程——函数式编程之偏函数

廖雪峰老师——Python进阶( 函数式编程 )

Php廖雪峰教程学习与实战

Python函数式编程以及高阶函数