木心

毕竟几人真得鹿,不知终日梦为鱼

导航

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、收集    <--返回目录

 

 

---

posted on 2021-01-18 00:03  wenbin_ouyang  阅读(178)  评论(0编辑  收藏  举报