概述

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的基本详解相关推荐

  1. java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

    java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

  2. java中properties作用,Java中Properties的使用详解

    Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也 ...

  3. Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3

    Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3 总览 问题 详解 String.intern()的作用 link LeetCode的Two Sum题 ...

  4. Java 1.8 函数式编程详解

    Java 1.8 函数式编程详解 文章目录 Java 1.8 函数式编程详解 一. 概述 1.1 java 8 新特性: 二. 函数式接口 2.1 函数式接口概述 2.2 Lambda表达式概述 2. ...

  5. Java中的static关键字详解

    ** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...

  6. java中的进制输出转换_Java I/O : Java中的进制详解

    作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...

  7. 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...

  8. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  9. java的动态代理机制详解

    2019独角兽企业重金招聘Python工程师标准>>> 参考资料 1.java的动态代理机制详解 转载于:https://my.oschina.net/Howard2016/blog ...

最新文章

  1. NLP-Progress记录NLP最新数据集、论文和代码: 助你紧跟NLP前沿
  2. GitHub因“纳粹”评论遭解雇的犹太员工被复职,CEO公开致歉,开除他的HR走人...
  3. 【计算理论】图灵机 ( 多个带子的图灵机 | 计算能力对比 | 证明过程 | 一个带子图灵机 )
  4. DFT实际应用-User-Defined Test Points Example
  5. Google和eBay在建设微服务生态系统中的深刻教训
  6. [转帖]IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?...
  7. SpringBoot的日志管理(输出级别,输出到文件)
  8. ubuntu下python thrift安装
  9. Minidao_1.6.1版本发布,超轻量Java持久化框架
  10. java运费模板设计_猿实战17——实现你未必知晓的运费模板
  11. docker删除es数据_docker使用系列之-(6).docker常用命令
  12. 利用DeskPins软件将windows窗口置顶
  13. 数据结构单链表表头插入生成单链表
  14. 金蝶BOS自定义元数据
  15. saltstack处理xml文件_saltstack部署returner [三]
  16. 王牌英雄怎么服务器维护了,王牌英雄新手入门指南 王牌英雄玩法技巧
  17. vue在线动态切换主题色方案
  18. 6.2 漫反射-半兰伯特
  19. 软件测试无效bug分析,(一)Bug不能重现的原因分析及其对策
  20. 揭秘中医养生之道,中药世家达人教你从喝茶开始养生

热门文章

  1. java阻塞队列的使用
  2. 机器学习笔记(2021-08-02 第一稿)
  3. iLEX RAT冬青鼠
  4. SMALI语法入门教程
  5. 五大国产数据库,遇到不能说不知道。
  6. 20. “我”模块(二)之星座
  7. 没有社保对买商业保险有什么影响?
  8. mysql 删除字段_MySQL命令行删除表中的一个字段
  9. Linux 基础入门 操作命令
  10. 【美团HD】cell的处理