1. 什么是流?

随着时间产生的数据序列
特点:

  1. 支持函数式编程
  2. 提供管道运算能力
  3. 提供并发并行(parallel)计算能力
  4. 提供大量的操作

    2. ::运算符的作用?

    方法引用(函数引用)操作符

    3. Java8的Stream价值是什么?

    4. 创建Stream有几种方法?

  5. Collection类的stream()方法

  6. 数组的Array.stream()方法
  7. Stream.of()方法
  8. Stream.generate()方法

    5. 利用parallel并发执行任务

    parallelStream默认启动(CPU核心数-1)个线程
    示例中并行流计算速度较慢,是因为任务拆分合并的速度较慢。

    1. public static void main(String[] args) {
    2. List<Integer> list = IntStream.range(0, 1_000_000)
    3. .boxed()
    4. .map(x -> (int) (Math.random() * 10_000_000))
    5. .collect(Collectors.toList());
    6. long t1 = System.currentTimeMillis();
    7. Optional<Integer> max1 = list.stream().max(Integer::compareTo);
    8. System.out.println("stream:" + max1);
    9. System.out.println("stream:" + (System.currentTimeMillis() - t1));
    10. long t2 = System.currentTimeMillis();
    11. Optional<Integer> max2 = list.parallelStream().max(Integer::compareTo);
    12. System.out.println("parallel stream:" + max2);
    13. System.out.println("parallel stream:" + (System.currentTimeMillis() - t2));
    14. }

    6. 函数式编程性质

  9. immutable/pure

  10. lazy
  11. safty——monad架构