Java8新特性:映射


public static void main(String[] args) {
    List list = Arrays.asList("aaa","bbb","ccc","ddd");
    list.stream()
            .map((x)-> x.toUpperCase())
            .forEach((x) -> System.out.println(x));

}

  这映射其实就是传一个函数型接口给里面,然后对所有元素都做一些操作。

package com;

import entity.Employee;

import java.util.Arrays;
import java.util.List;

public class Main {


    static List employees = Arrays.asList(
            new Employee("aa", 18, 99999.99),
            new Employee("bb", 22, 222222.22),
            new Employee("cc", 33, 23123.9),
            new Employee("dd", 11, 139.99),
            new Employee("ee", 23, 929.99),
            new Employee("ff", 68, 1000.00)
    );


    public static void main(String[] args) {
        employees.stream()
                .map((x) -> x.getName())
                .forEach((x)-> System.out.println(x));

    }
}

flatmap 翻译的话就是平铺的意思,功能上也是,把流平铺,然后再组合为一个新的流。

里面传一个函数式接口,返回值是 一个流。

public static void main(String[] args) {
    List list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
    list.stream()
            .flatMap((x) -> {
                x = x.toUpperCase();
                List ll = new ArrayList<>();
                for (int i = 0; i < x.length(); i++) {
                    char c = x.charAt(i);
                    ll.add(c);
                }
                return ll.stream();
            })
            .forEach((x) -> System.out.print(x+" "));

}

   public static void main(String[] args) {
        List list = Arrays.asList("aaa", "bbb", "ccc", "ddd");

        Stream characterStream = list.stream()
                .flatMap((x) -> {
                    x = x.toUpperCase();
                    List ll = new ArrayList<>();
                    for (int i = 0; i < x.length(); i++) {
                        char c = x.charAt(i);
                        ll.add(c);
                    }
                    return ll.stream();
                });

        Stream> streamStream = list.stream()
                .map((x) -> {
                    x = x.toUpperCase();
                    List ll = new ArrayList<>();
                    for (int i = 0; i < x.length(); i++) {
                        char c = x.charAt(i);
                        ll.add(c);
                    }
                    return ll.stream();
                });


    }

有点类似 add 和addAll方法。

add如果是添加一个集合,就会把集合添加到里面作为一个元素,集合中会包含集合

addAll添加一个集合的话,就是把集合中的每一个元素都添加到里面作为每个单独的元素。

这里的flatmap就是 addAll类似的,把所有的流都合并下来,合并后,流中不包含流,也就是addAll中集合里面不包含集合。