Java 8 Stream的基本详解
概述
tream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找、遍历、过滤以及常见计算等。
聚合操作
数据类
public class Student {int no;String name;String sex;float height;public Student(int no, String name, String sex, float height) {this.no = no;this.name = name;this.sex = sex;this.height = height;}****
}Student stuA = new Student(1, "A", "M", 184);
Student stuB = new Student(2, "B", "G", 163);
Student stuC = new Student(3, "C", "M", 175);
Student stuD = new Student(4, "D", "G", 158);
Student stuE = new Student(5, "E", "M", 170);
List<Student> list = new ArrayList<>();
list.add(stuA);
list.add(stuB);
list.add(stuC);
list.add(stuD);
list.add(stuE);
打印出Sex为G的对象
Iterator迭代方式
Iterator<Student> iterator = list.iterator();
while(iterator.hasNext()) {Student stu = iterator.next();if (stu.getSex().equals("G")) {System.out.println(stu.toString());}
}
打印出Sex为G的对象
聚合操作
list.stream().filter(student -> student.getSex().equals("G")).forEach(student -> System.out.println(student.toString()));
首先,通过stream方法创建Stream,然后再通过filter方法对源数据进行过滤,最后通过foeEach方法进行迭代。在聚合操作中,与Labda表达式一起使用,显得代码更加的简洁。这里值得注意的是,我们首先是stream方法的调用,其与iterator作用一样的作用一样,该方法不是返回一个控制迭代的 Iterator 对象,而是返回内部迭代中的相应接口: Stream,其一系列的操作都是在操作Stream,直到feach时才会操作结果,这种迭代方式称为内部迭代。
更多Stream聚合操作:
Stream的操作分类
Java 8 Stream的基本详解相关推荐
- java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用
java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用
- java中properties作用,Java中Properties的使用详解
Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也 ...
- Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3
Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3 总览 问题 详解 String.intern()的作用 link LeetCode的Two Sum题 ...
- Java 1.8 函数式编程详解
Java 1.8 函数式编程详解 文章目录 Java 1.8 函数式编程详解 一. 概述 1.1 java 8 新特性: 二. 函数式接口 2.1 函数式接口概述 2.2 Lambda表达式概述 2. ...
- Java中的static关键字详解
** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...
- java中的进制输出转换_Java I/O : Java中的进制详解
作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...
- Java中的main()方法详解
源文作者:leizhimin 源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...
- java的动态代理机制详解
2019独角兽企业重金招聘Python工程师标准>>> 参考资料 1.java的动态代理机制详解 转载于:https://my.oschina.net/Howard2016/blog ...
最新文章
- NLP-Progress记录NLP最新数据集、论文和代码: 助你紧跟NLP前沿
- GitHub因“纳粹”评论遭解雇的犹太员工被复职,CEO公开致歉,开除他的HR走人...
- 【计算理论】图灵机 ( 多个带子的图灵机 | 计算能力对比 | 证明过程 | 一个带子图灵机 )
- DFT实际应用-User-Defined Test Points Example
- Google和eBay在建设微服务生态系统中的深刻教训
- [转帖]IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?...
- SpringBoot的日志管理(输出级别,输出到文件)
- ubuntu下python thrift安装
- Minidao_1.6.1版本发布,超轻量Java持久化框架
- java运费模板设计_猿实战17——实现你未必知晓的运费模板
- docker删除es数据_docker使用系列之-(6).docker常用命令
- 利用DeskPins软件将windows窗口置顶
- 数据结构单链表表头插入生成单链表
- 金蝶BOS自定义元数据
- saltstack处理xml文件_saltstack部署returner [三]
- 王牌英雄怎么服务器维护了,王牌英雄新手入门指南 王牌英雄玩法技巧
- vue在线动态切换主题色方案
- 6.2 漫反射-半兰伯特
- 软件测试无效bug分析,(一)Bug不能重现的原因分析及其对策
- 揭秘中医养生之道,中药世家达人教你从喝茶开始养生