zoukankan      html  css  js  c++  java
  • 廖雪峰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类型 ```#java 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 names = Arrays.stream(inputs);
    Stream 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);
    }
    }

    <img src="https://img2018.cnblogs.com/blog/1418970/201909/1418970-20190907115829407-228901990.png" width="500" />
    ##    4. 总结:
    map()方法:
    *    将一个Stream的每个元素映射成另一个元素并生成一个新的Stream
    *    可以将一种元素类型转换成另一种元素类型
  • 相关阅读:
    BZOJ 4245: [ONTAK2015]OR-XOR
    BZOJ 2535: [Noi2010]Plane 航空管制2
    COGS 2551. 新型武器
    cogs2550. 冰桥,升起来了!
    大数模板
    uva 1513(线段树)
    uva 11525(线段树)
    poj 3368(RMQ模板)
    hdu 4686 Arc of Dream(矩阵快速幂)
    poj 3321 Apple Tree(树状数组)
  • 原文地址:https://www.cnblogs.com/csj2018/p/11480006.html
Copyright © 2011-2022 走看看