1.java中的stream流,实际上是方便于我们对集合中的元素进行筛选操作,流可包含两个操作,一为中间操作intermediate operation,主要用于筛选,过滤数据,二为终端操作terminal operation,主要是得到结果,返回结果。终端操作只能有一个,中间操作可以有多个。中间操作之后返回的仍然是一个流,终端操作返回的可能是int,可能是集合等。对于集合而言,流的创建方式为Collection.stream()。

2.如下为一些简单的基础方法的使用
2.1)新建一个Pig类。

package com.qingfeng.stream;import java.io.Serializable;
import java.util.Objects;/*** @author:wfj* @date:Created in 8:59* @version:1.0*/
public class Pig implements Serializable {private String name;private Integer age;private String sex;private String color;public Pig() {}public Pig(String name, Integer age, String sex, String color) {this.name = name;this.age = age;this.sex = sex;this.color = color;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}@Overridepublic String toString() {return "Pig{" +"name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +", color='" + color + '\'' +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Pig pig = (Pig) o;return Objects.equals(name, pig.name) &&Objects.equals(age, pig.age) &&Objects.equals(sex, pig.sex) &&Objects.equals(color, pig.color);}@Overridepublic int hashCode() {return Objects.hash(name, age, sex, color);}
}

2.2)stream一些简单方法的使用。

package com.qingfeng.stream;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;/*** @author:wfj* @date:Created in 9:00* @version:1.0*/
public class streamTest01 {public static void main(String[] args) {List<Pig> list = new ArrayList<>();Pig p1 = new Pig("佩奇",3,"男","红色");list.add(p1);Pig p2 = new Pig("小白",2,"男","白色");list.add(p2);Pig p3 = new Pig("兰溪",5,"女","紫色");list.add(p3);Pig p4 = new Pig("新风",3,"男","白色");list.add(p4);Pig p5 = new Pig("新风",3,"男","白色");list.add(p5);//集合转换成流遍历输出list.stream().forEach(item -> {System.out.println(item);});System.out.println("===========");//筛选白色的pig,返回一个新的集合List<Pig> newList = list.stream().filter(item -> item.getColor() == "白色").collect(Collectors.toList());for(Pig p : newList) {System.out.println(p);}//返回此流的所有元素是否与所提供的谓词相匹配boolean a = list.stream().allMatch(item -> item.getAge() > 10);//结果:返回falseSystem.out.println(a);//返回此流的任何元素是否与所提供的谓词相匹配boolean b = list.stream().anyMatch(item -> item.getColor() == "紫色");//结果:返回trueSystem.out.println(b);//返回此流的元素是否与提供的谓词匹配boolean c = list.stream().noneMatch(item -> item.getColor() == "橙黄色");//结果,返回trueSystem.out.println(c);//筛选红色的piglist.stream().filter(item -> item.getColor()=="红色").forEach(System.out::println);//筛选白色的pig并且年龄等于2list.stream().filter(item -> item.getColor() == "白色" && item.getAge()==2).forEach(System.out::println);//也可以这样,中间操作可以有多个list.stream().filter(item -> item.getColor() == "白色").filter(item -> item.getAge() == 2).forEach(System.out::println);//返回集合元素的个数long count = list.stream().count();//结果:5System.out.println(count);//去重复(根据Object的equals方法来判断)list.stream().distinct().collect(Collectors.toList()).forEach(System.out::println);//返回由给定函数应用于此流的元素的结果组成的流。//每头猪的年龄乘于10且打印输出list.stream().map(item -> item.getAge() * 10).forEach(System.out::println);//结果:30,20,50,30,30//筛选白色的pig,且将其名字封装成一个集合返回List<String> names = list.stream().filter(item -> item.getColor() == "白色").map(item -> item.getName()).collect(Collectors.toList());for(String str : names)  {System.out.println(str);}//写法亦可如下:List<String> names2 = list.stream().filter(item -> item.getColor() == "白色").map(Pig :: getName).collect(Collectors.toList());for(String str : names2)  {System.out.println(str);}//返回一个DoubleStream,其中包括给定的函数应用于此流的元素的结果组成的流//其实就是取这个元素的某个属性,做相应的处理(mapToDouble、mapToLong和mapToInt),再返回此属性的流list.stream().mapToDouble(item -> item.getAge() * 10).forEach(System.out::println);//结果:30.0, 20.0,50.0,30.0,30.0//除此之外,还有mapToLong和mapToInt,其用法和mapToDouble相似//统计白色的pig的年龄int sum = list.stream().filter(item -> item.getColor() == "白色").mapToInt(item -> item.getAge()).sum();//结果为8System.out.println(sum);//返回指定的元素个数list.stream().limit(2).forEach(System.out::println);//只打印两条数据}
}

java中stream基础方法的使用相关推荐

  1. Java中Stream的使用

    Java中Stream的使用 请先了解Lambda表达式的用法,有一定Lambda基础后再进行Stream学习. Lambda博文链接:Lambda表达式的详解 本文来自于B站博主:倜傥的雷哥 的视频 ...

  2. java 重写方法 访问权限_为何Java中子类重写方法的访问权限不能低于父类中权限(内含里氏替换原则)...

    为何Java中子类重写方法的访问权限不能低于父类中权限 因为 向上转型及Java程序设计维护的原因 例: 假设一个父类A 拥有的方法public void setXXX(){}可以被其他任意对象调用这 ...

  3. JAVA中list.contains()方法,要重写equals(),hashcode()方法

    今天动力节点java培训机构小编为大家介绍"JAVA中list.contains()方法,要重写equals(),hashcode()方法",希望能够帮助正在学习java的零基础学 ...

  4. java integer最大值_五分钟学会java中的基础类型封装类

    在刚刚学习java的时候,老师不止一次的说过java是一种面向对象的语言,万物皆对象.对于java中的基础数据类型,由于为了符合java中面向对象的特点,同样也有其封装类.这篇文章对其有一个认识. 一 ...

  5. jAvA中deprecate,在Java中使用Deprecated方法或类是错误的吗?

    1.在Java中使用Deprecated方法或类是错误的吗? 从已弃用的定义 : 注释@Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它是危险的,或者是因为存在更好的selec ...

  6. 第76节:Java中的基础知识

    第76节:Java中的基础知识 设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat 折佣动态代理解决网站的字符集编码问题 使用request. ...

  7. Java中Math.ceil()方法具有什么功能呢?

    转自: Java中Math.ceil()方法具有什么功能呢? 下文笔者将讲述Math.ceil()方法的功能说明,如下所示: Math.ceil()方法功能:将一个数向上舍入,返回的数大于或等于参数值 ...

  8. java中垃圾收集的方法

    java中垃圾收集的方法 标记-清除: 这是垃圾收集算法中最基础的,根据名字就可以知道,它的思想就是标记哪些要被回收的对象,然后统一回收.这种方法很简单,但是会有两个主要问题:1.效率不高,标记和清除 ...

  9. JAVA中复制数组的方法

     在JAVA里面,可以用复制语句"A=B"给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么 ...

最新文章

  1. Nature:手机1秒生成3D全息图;MIT团队新作,索尼投钱支持
  2. nginx 基础配置和常用模块
  3. c语言中go的作用,go语言与c语言的相互调用
  4. 为何你叫妹子笑,却拍出无数黑照?
  5. angular cli 切换 css_漫谈 Angular 定制主题的四种方式
  6. linux 获取CPU NUMA内存节点信息
  7. 在linux命令行中直接执行php命令
  8. [二叉树|深搜|dfs] leetcode 404 左叶子之和
  9. Tarjan+topsort(DP)【P3387】 [模板]缩点
  10. VS挤房间探索(含源码)
  11. python木马程序设计_基于HTTP的Python特洛伊木马程序,用于远程系统取证和特权转移
  12. raw文件格式 Android,手机摄影知识讲堂:关于RAW格式的那些事
  13. python csv writer_python 处理 csv 文件
  14. 颜色类中英文词汇大全(3)
  15. 计算机中的无线网卡使用哪两种类型的扩展槽,第三章计算机每一种扩展槽的相关信息.ppt...
  16. P2p网站建设解决方案
  17. UML类图以及类与类之间的关系
  18. java国王毒酒答案,囚犯与毒酒问题
  19. 安卓手机上有哪些好用的txt小说阅读器?
  20. 深度盘点:可视化看板20份,直接套用真爽

热门文章

  1. js里双间隔问号表达式,类似于A?B?C:D:E的表达式
  2. 华为id修改sip服务器地址,u8修改服务器地址id
  3. win10系统怎么搜索xp计算机,win10怎么重装winxp_win10上如何安装xp系统
  4. python 面向对象之封装与类与对象
  5. 做闲鱼两年了,bug不少
  6. 从《后来的我们》刷票房,到专业版停摆两个小时的沉默,五一是猫眼的滑铁卢?...
  7. 多益网络社招iq_【多益网络技术面试】岗位就不说了,社招网申填简历。-看准网...
  8. php批量添加图片,php excel给excel批量插入图片
  9. 今日头条架构千字分析,这一篇就够了
  10. Firework使用简单介绍