• java 8 Stream


    1. Stream是元素的集合,这点让Stream看起来用些类似Iterator;
    2. 可以支持顺序和并行的对原Stream进行汇聚的操作;

    http://www.importnew.com/24300.html

    http://www.jianshu.com/p/cbd5713a8f26

    创建流->转换流->聚合流

    创建流:
    数组创建Stream: Arrays.stream()Stream.of()


    集合创建:

    1,Stream.of()

    2,Stream.generate()

    Stream.generate(new Supplier<Double>() {
        @Override
        public Double get() {
            return Math.random();
        }
    });
    
    Stream.generate(() -> Math.random());
    
    Stream.generate(Math::random);
    这三个的意思是一样的。
    generate是建立了一个无限长度的Stream
    其元素的生成是通过给定的Supplier(这个接口可以看成一个对象的工厂,每次调用返回一个给定类型的对象)
    例如: Stream.generate(()->"HelloWorld").forEach(System.out::println);
    无限打印“Hello World”

    3,Stream.iterate()

    Stream.iterate(seed,func(seed))
    相当于每一次取出一个值,分别是 seed、func(seed)、func(func(seed))
    例如:
    Stream.iterate(1, item -> item + 1).limit(10).forEach(System.out::println);
    打印出1--10

    4,Collection.stream()

    5,Collectrion.parallelStream()//创建并行的流

    转换流

    • 过滤操作filter,distinct
    • 变换操作map,flatMap
    • 拆分合并流操作limit,skip,concat,peek
    • 排序操作sorted,unordered

    flatMap: 是e->Stream的转换,把每一个元素变成一个流,然后合并起来

    private static void flatMapStream() {
        String [] strs1 = {"a","b","c"};
        String [] strs2 = {"d","e","f"};
        String [] strs3 = {"a","g","h"};
        Arrays.asList(strs1,strs2,strs3)
              .stream()
              .flatMap(str -> Stream.of(str))
              .map(s -> s+",")
              .forEach(System.out::print);
        }
    
    流本身是一个 Stream(<String[]>) ,就是关于String[]的一个流,通过flatMap之后,把每一个String[]元素里面的内容拿出来了,做成了一个新的流

    concat

    static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)
    将两个Stream合并成一个,这个方法一次只能用来合并两个Stream,不能一次多个Stream合并。
    Sorted
    sorted(Comparator< ? super T > comparator)

    可以自定义多个条件的比较

    Arrays.asList("ae", "f", "gqet", "abcd", "ertyu", "zxc")
          .stream()
          .sorted(
                   Comparator.comparing(String::length)
                             .thenComparing(String::compareTo)
                 )
          .forEach(System.out::println);

    .Stream的结果处理

    • 遍历forEach
    • 聚合reduce
    • Optional类型
    • 收集collect
  • 相关阅读:
    C#根据url生成唯一的key
    MyBatis基本配置和实践(四)
    MyBatis基本配置和实践(三)
    MyBatis基本配置和实践(二)
    MyBatis基本配置和实践(一)
    dbcp2、c3p0、druid连接池的简单配置
    HTTP长连接和短连接
    Java Web高性能开发
    三层构架 和 MVC 是什么?
    Docker bridge探索
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/6780885.html
Copyright © 2020-2023  润新知