zoukankan      html  css  js  c++  java
  • Java8中的Stream API基本用法总结

    另外参考:Java8中的Stream API基本用法总结

    录:

    1、Stream API说明
    2、Stream的实例化
    3、Stream的中间操作
        3.1、筛选和切片
        3.2、映射
        3.3、排序
    4、Stream的终止操作
        4.1、匹配与查找
        4.2、归约
        4.3、收集

    1、Stream API说明    <--返回目录

      Java8中有两个最为重要的改变。第一个是Lambda表达式,另外一个则是Stream API。

      Stream API(java.util.stream)把真正的函数式编程风格引入到java中。这是目前为止对java类库最好的补充,因为Stream API 可以极大提高java程序员的生产力,让程序员写出高效率、干净、简洁的代码。

      Stream是java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。也可以使用Stream API来并行执行操作。简言之,Stream API提供了一种高效且易于使用的处理数据的方式。

      为什么使用Stream API?

      - 实际开发中,项目中多数数据源都来自于mysql、oracle等。但现在数据源可以更多了,有mongdb、redis等,而这些nosql的数据就需要java层面去处理。

      - Stream和Collection集合的区别:Collection是一种静态的内存数据结构,而Stream是有关计算的。前者是主要面向内存,存储在内存中,后者主要是面向CPU,通过CPU实现计算。

      什么是Stream?

      Stream的操作三步骤

    2、Stream的实例化    <--返回目录

    @Test
    public void test() {
        // 创建Stream方式一: 集合, Collection的方法 default Stream<E> stream()
        List<String> list = new ArrayList<>();
        list.add("aaa");
        Stream<String> stream = list.stream();
        
        // 创建Stream方式二: 数组
        // Arrays.stream()接收基本类型数组
        int[] arr1 = new int[] {1,2,3};
        IntStream inStream = Arrays.stream(arr1);
        // Arrays.stream()接收非基本类型数组
        Integer[] arr2 = new Integer[] {1,2,3};
        Stream<Integer> stream2 = Arrays.stream(arr2);
        
        // 创建Stream方式三: Stream.of()
        Stream<Integer> stream3 = Stream.of(1,2,3);
        
        // 无限流: 迭代
        // 遍历前10个偶数
        Stream.iterate(0, t -> t + 2).limit(10).forEach(System.out::println);
        
        // 无限流: 生成
        Stream.generate(Math::random).limit(10).forEach(System.out::println);
    }

    3、Stream的中间操作    <--返回目录

    3.1、筛选和切片    <--返回目录

    3.2、映射    <--返回目录

    3.3、排序    <--返回目录

    4、Stream的终止操作    <--返回目录

    4.1、匹配与查找    <--返回目录

    4.2、归约    <--返回目录

    @Test
    public void test() {
        // 数组求和
        List<Integer> list = Arrays.asList(1,2,3,4,5);
        int sum = list.stream().reduce(0, Integer::sum);
        System.out.println(sum);
    }

    4.3、收集    <--返回目录

    ---

  • 相关阅读:
    static、final、this、super关键
    细节二:参数、引用类型、实例化
    枚举类型
    单例模式
    细节一:字符串、switch、默认值、数组
    类属性和类方法
    装饰器模式
    TreeSet
    可见参数和增强for以及自动拆装箱
    静态导入
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/14290864.html
Copyright © 2011-2022 走看看