Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。这篇文章主要介绍了Java8新特性Stream流的相关资料,需要的朋友参考下吧
目录
一、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 举报,一经查实,本站将立刻删除。