Stream流式编程
介绍
Java中的Stream是一种流式编程方式,主要用于对集合数据进行操作和处理。Stream可以让我们更加简单、高效、灵活地处理集合数据,避免了繁琐的循环和判断,同时也提高了代码的可读性和可维护性。
Stream主要包括以下几个特点:
- 集合元素的处理是通过Stream的一系列中间操作来完成的,例如过滤、排序、映射等。
- Stream的
中间操作
是惰性求值的,只有当终止操作调用时才会执行。 - Stream的
终止操作
会触发中间操作的执行,并返回一个结果,例如收集、计数、查找等。
实现
对于Stream流式编程方式 ,我们实现起来就按照三步进行执行即可。
1. 得到Stram流
首先我们要做的就是得到stream,对于不同的数据存储类型,得到的Stream流是不同的
下图是几种常见的方式 :
2. 中间操作
使用Stream流常见的中间操作的方法应该是filter
但是除了filter ,我们还有很多其他的操作方法 ,比如Sorted
、limit
、skip
、 distinct
、 concat
、 map
下图是这几种方法的介绍。
常见的filter等操作实现:
1 | public static void main(String[] args) { |
注意一:
使用中间方法返回新的Stream流,原来的Stream流只能使用一次,如果想使用最好使用链式编程
注意二 :
修改Stream流中的数据 ,是不会改变原来集合或数组中的数据
3. 终止操作
终止操作是Stream 的最后一步,当执行终止操作时,Stream将不再接收新的元素,并开始执行中间操作生成的操作链。
Collect
对于Collect最后的收集操作 ,我们可以收集为一下几种形式,一旦收集操作 开始执行 ,那么前面的中间操作将开始产生操作链
map集合
,它用于将Stream中的元素转换为一个Map对象。该方法接受两个参数
- 第一个参数是Function类型的对象,用于将Stream中的元素转换为Map的key
- 第二个参数是Function类型的对象,用于将Stream中的元素转换为Map的value。
如果Stream中的元素存在key相同的情况,则会抛出IllegalStateException异常。
如果是函数式是编程, 那么它其中的方法Function中的数据对应关系为 下图:
1 | List<Person> persons = new ArrayList<>(); |
对于函数式编程 和流式编程生成的规则
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Rayce. Blogs!
评论