Stream流式编程

简介: Stream流式编程

介绍



Java中的Stream是一种流式编程方式,主要用于对集合数据进行操作和处理。Stream可以让我们更加简单、高效、灵活地处理集合数据,避免了繁琐的循环和判断,同时也提高了代码的可读性和可维护性。


Stream主要包括以下几个特点:


  1. 集合元素的处理是通过Stream的一系列中间操作来完成的,例如过滤、排序、映射等。
  2. Stream的中间操作是惰性求值的,只有当终止操作调用时才会执行。
  3. Stream的终止操作会触发中间操作的执行,并返回一个结果,例如收集、计数、查找等。


实现



对于Stream流式编程方式 ,我们实现起来就按照三步进行执行即可。


1. 得到Stram流


首先我们要做的就是得到stream,对于不同的数据存储类型,得到的Stream流是不同的


下图是几种常见的方式 :

image-20230404195639578.png



2. 中间操作


使用Stream流常见的中间操作的方法应该是filter


但是除了filter ,我们还有很多其他的操作方法 ,比如Sorted 、limit 、skip 、 distinct 、 concat 、 map


下图是这几种方法的介绍。

image-20230404200119680.png


常见的filter等操作实现:


public static void main(String[] args) {
    List<Integer> numbers = Arrays.asList(2, 3, 4, 1, 6, 5);
    List<Integer> result = numbers.stream()
            .filter(n -> n % 2 == 0) // 过滤偶数
            .sorted() // 排序
            .map(n -> n * n) // 映射为平方数
            .collect(Collectors.toList()); // 收集到List中
    System.out.println(result); // [4, 16, 36]
}

注意一:

使用中间方法返回新的Stream流,原来的Stream流只能使用一次,如果想使用最好使用链式编程


注意二 :

修改Stream流中的数据 ,是不会改变原来集合或数组中的数据


3. 终止操作


终止操作是Stream 的最后一步,当执行终止操作时,Stream将不再接收新的元素,并开始执行中间操作生成的操作链。


image-20230404202844990.png


Collect


对于Collect最后的收集操作 ,我们可以收集为一下几种形式,一旦收集操作 开始执行 ,那么前面的中间操作将开始产生操作链


image-20230404203324529.png


map集合


,它用于将Stream中的元素转换为一个Map对象。该方法接受两个参数


  • 第一个参数是Function类型的对象,用于将Stream中的元素转换为Map的key
  • 第二个参数是Function类型的对象,用于将Stream中的元素转换为Map的value。


如果Stream中的元素存在key相同的情况,则会抛出IllegalStateException异常。


如果是函数式是编程, 那么它其中的方法Function中的数据对应关系为 下图:


image-20230404204242551.png

image-20230404204621868.png


List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 20));
persons.add(new Person("Jack", 22));
persons.add(new Person("Lucy", 21));
Map<String, Integer> map = persons.stream().collect(Collectors.toMap(Person::getName, Person::getAge));


对于函数式编程 和流式编程生成的规则

image-20230404204946941.png


目录
相关文章
|
6月前
|
Java API 数据处理
探索 Java 8 中的 Stream 流:构建流的多种方式
探索 Java 8 中的 Stream 流:构建流的多种方式
|
6月前
|
Java
【Java】Stream流是什么,如何使用Stream流?
【Java】Stream流是什么,如何使用Stream流?
82 0
|
6月前
|
分布式计算 并行计算 Java
Java的流(Streams)与并行处理的技术性文章
Java的流(Streams)与并行处理的技术性文章
54 1
|
2月前
|
安全 Java API
Stream流式编程,让代码变优雅
Stream流式编程,让代码变优雅
|
2月前
|
Java 数据处理
Stream流的简单使用
这篇文章介绍了Java中Stream流的基本概念和使用方法。文章解释了Stream流的三类方法:获取流、中间方法和终结方法。详细讨论了如何生成Stream流,包括从Collection体系集合、Map体系集合、数组和同种数据类型的多个数据中生成流。接着,介绍了Stream流的中间操作方法,如`filter`、`limit`、`skip`、`concat`和`distinct`。文章还讨论了Stream流的终结方法,如`forEach`和`count`,以及收集方法,如`collect`。最后,通过几个例子演示了如何使用Stream流进行数据处理和收集操作。
|
6月前
|
Java 容器
Stream 流常见基本操作
Stream 流常见基本操作
|
5月前
|
存储 Java API
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
82 0
|
6月前
|
存储 SQL Java
Java8 Stream API 详解:流式编程进行数据处理
Java8 Stream API 详解:流式编程进行数据处理
超强的Stream流了解一下
超强的Stream流了解一下
|
6月前
|
Java
Stream流教程
Stream流教程
68 0