微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一篇文章带你了解Java Stream流

Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。这篇文章主要介绍了Java8新特性Stream流的相关资料,需要的朋友参考下吧

目录

一、Stream流引入

现有一个需求:

1.用常规方法解决需求

2.用Stream流操作集合,获取流,过滤操作,打印输出

二、Stream流的格式

三、获取

四、Stream流的常用方法

方法演示:

1.count方法

2.filter方法

3.forEach方法

4.limit方法

5.map方法

6.skip方法

7.concat方法

五、收集Stream流

总结

一、Stream流引入

Lambda表达式,基于Lambda所带来的函数式编程,又引入了一个全新的Stream概念,用于解决集合类库既有的鼻端。(Lambda表达式详解在上篇博客内容

现有一个需求:

将list集合中姓张的元素过滤到一个新的集合中

然后将过滤出来的姓张的元素中,再过滤出来长度为3的元素,存储到一个新的集合中

1.用常规方法解决需求

// 已知的知识来解决需求 List list1 = new ArrayList(); list1.add("张老三"); list1.add("张小三"); list1.add("李四"); list1.add("赵五"); list1.add("张六"); list1.add("王八"); ArrayList list2 = new ArrayList(); // 1.将list集合中姓张的元素过滤到一个新的集合中 for(String name : list1){ if(name.startsWith("张")){ list2.add(name); } } ArrayList list3 = new ArrayList(); for (String name : list2) { if (name.length() == 3){ list3.add(name); } } System.out.println(list3);

        输出结果:

            [张颜宇, 张三丰]

2.用Stream流操作集合,获取流,过滤操作,打印输出

list1.stream().filter((String name)->name.startsWith("张")).filter((String name)->name.length()==3).forEach((String name)->{ System.out.println("符合条件的姓名:" + name); });

( 看不懂没关系,下面会讲到该方法,这里只是用来引入的)

二、Stream流的格式

Stream filter(Predicate super T> predicate); -----> 参数:public interface Predicate (函数式接口) ----> 抽象方法:boolean test(T t); -----> 参数:public interface Consumer (函数式接口) ----> 抽象方法:boolean test(T t);

整体代码看来:流式思想 类似于 工厂车间的“流水线”

( 看不懂没关系,下面会讲到该方法,这里只是用来引入的)

三、获取

根据集合来获取

根据Collection获取流:

Collection接口中有一个stream()方法,可以获取

default Stream stream()

1.根据List获取

2.根据Set获取

3.根据Map获取

3.1根据Map集合的键来获取

3.2根据Map集合的值获取

3.3根据Map集合的键值对对象获取

4.根据数组获取

代码演示:

1.根据List集合获取

// 创建List集合 List list = new ArrayList(); list.add("张老三"); list.add("张小三"); list.add("李四"); list.add("赵五"); list.add("张六"); list.add("王八"); Stream stream1 = list.stream();

2.根据Set集合获取

// 创建List集合 Set set = new HashSet(); list.add("张老三"); list.add("张小三"); list.add("李四"); list.add("赵五"); list.add("张六"); list.add("王八"); Stream stream2 = set.stream();

3.根据Map集合获取

// 创建Map集合 Map map = new HashMap(); map.put(1,"张老三"); map.put(2,"张小三"); map.put(3,"李四"); map.put(4,"赵五"); map.put(5,"张六"); map.put(6,"王八"); // 3.1根据Map集合的键获取流 Set map1 = map.keySet(); Stream stream3 = map1.stream(); // 3.2根据Map集合的值获取流 Collection map2 = map.values(); Stream stream4 = map2.stream(); // 3.3根据Map集合的键值对对象获取瑞 Set> map3 = map.entrySet(); Stream> stream5 = map3.stream();

4.根据数组获取

// 根据数组获取流 String[] arr = {"张颜宇","张三","李四","赵五","刘六","王七"}; Stream stream6 = Stream.of(arr);

四、Stream流的常用方法

Stream流的常用方法

终结方法:返回值类型不再是Stream接口本身类型的方法,例如:forEach方法和count方法

非终结方法/延迟方法:返回值类型仍然是Stream接口自身类型的方法,除了终结方法都是延迟方法。例如:filter,limit,skip,map,conat

方法名称方法作用方法种类是否支持链式调用count统计个数终结方法否forEach逐一处理终结方法否filter过滤函数拼接是limit取用前几个函数拼接是skip跳过前几个函数拼接是map映射函数拼接是concat组合函数拼接是

方法演示:

上一篇:聊聊SpringBoot中组件无法被注入的问题下一篇:关于JAVA8的 Stream学习 热门搜索

单篇文章 

stream流 

推荐一篇入门级的Class文章 

Stream流式操作 

带你 

相关文章

一篇文章带你了解Java Stream流

2021-09-10阅读(6987)评论(0)推荐()

Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。这篇文章主要介绍了Java8新特性Stream流的相关资料,需要的朋友参考下吧

详解JAVA Stream流

2021-10-12阅读(7035)评论(0)推荐()

这篇文章主要介绍了JAVA Stream流的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

Java基础:流Stream详解

2021-09-29阅读(4857)评论(0)推荐()

Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。这篇文章主要介绍了Java8新特性Stream流的相关资料,需要的朋友参考下吧

Java Stream 流的使用过程解析

2021-11-18阅读(3509)评论(0)推荐()

这篇文章主要介绍了Java Stream 流的使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Java Stream 流实现合并操作示例

2021-10-19阅读(9328)评论(0)推荐()

这篇文章主要介绍了Java Stream 流实现合并操作,结合实例形式详细分析了Java Stream 流实现合并操作原理与相关注意事项,需要的朋友可以参考下

一篇文章带你深入了解java类加载

2021-10-19阅读(4885)评论(0)推荐()

这篇文章主要介绍了Java中类加载过程全面解析,具有一定参考价值,需要的朋友可以了解下,希望能给你带来帮助

一篇文章带你了解初始Spring

2021-10-18阅读(5741)评论(0)推荐()

这篇文章主要给大家介绍了一个简单的spring容器初始化流程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

取消

有人回复邮件通知

提交评论

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐