流表示包含着一系列元素的集合,我们可以对其做不同类型的操作,用来对这些元素执行计算

二.中间流的部分应用
中间操作会再次返回一个流,所以,我们可以链接多个中间操作,注意这里是不用加分号的。

/*
Stream流中间操作方法- 概念中间操作的意思是,执行完此方法之后,Stream流依然可以继续执行其他操作。
- 常见方法方法名                                       说明Stream<T> filter(Predicate predicate)       用于对流中的数据进行过滤Stream<T> limit(long maxSize)             返回此流中的元素组成的流,截取前指定参数个数的数据Stream<T> skip(long n)                    跳过指定参数个数的数据,返回由该流的剩余元素组成的流static <T> Stream<T> concat(Stream a, Stream b)    合并a和b两个流为一个流Stream<T> distinct()                      返回由该流的不同元素(根据Object.equals(Object) )组成的流Stream<T> sorted()                          返回由此流的元素组成的流,根据自然顺序排序Stream<T> sorted(Comparator comparator)   返回由该流的元素组成的流,根据提供的Comparator进行排序<R> Stream<R> map(Function mapper)       返回由给定函数应用于此流的元素的结果组成的流IntStream mapToInt(ToIntFunction mapper)  返回一个IntStream其中包含将给定函数应用于此流的元素的结果*/
public class StreamDemo {public static void main( String[] args ) {List<String> list = new ArrayList<>();list.add("孙悟空");list.add("齐天大圣");list.add("孙悟能");list.add("孙源");list.add("王孙");System.out.println("-----------Stream<T> filter(Predicate predicate)----------------");/*Stream<T> filter(Predicate predicate)     用于对流中的数据进行过滤Predicate接口:表示一个参数的谓词(布尔值函数)。startsWith : String类中的方法;包含的意思*/list.stream().filter(s -> s.startsWith("孙")).forEach(System.out::println);//结果: 孙悟空 孙悟 孙源System.out.println("-------------- Stream<T> limit(long maxSize) ------------------");/*Stream<T> limit(long maxSize)            返回此流中的元素组成的流,截取前指定参数个数的数据*/list.stream().limit(3).forEach(s -> System.out.println(s));//截取制定 的参数: 孙悟空 齐天大圣 孙悟能System.out.println("---------------static <T> Stream<T> concat(Stream a, Stream b)-----------------");// Stream<T> skip(long n)                     跳过指定参数个数的数据,返回由该流的剩余元素组成的流// list.stream().skip(2).forEach(System.out::println);//取2以后的所有参数 结果:孙悟能 孙源 王孙//static <T> Stream<T> concat(Stream a, Stream b)    合并a和b两个流为一个流Stream<String> limit = list.stream().limit(3);Stream<String> skip = list.stream().skip(3);Stream.concat(limit, skip).forEach(System.out::print); //孙悟空 齐天大圣 孙悟能 孙源 王孙//Stream<T> distinct()                     返回由该流的不同元素(根据Object.equals(Object) )组成的流Stream.concat(list.stream().limit(3), list.stream().skip(2)).distinct().forEach(System.out::println);//去掉了孙悟能这个名字:  孙悟空 齐天大圣  孙悟能 孙源  王孙System.out.println("-------Stream<T> sorted()   -----------");//Stream<T> sorted()                          返回由此流的元素组成的流,根据自然顺序排序list.stream().sorted().forEach(System.out::println);System.out.println("-------------Stream<T> sorted(Comparator comparator)--------------------");//Stream<T> sorted(Comparator comparator)  返回由该流的元素组成的流,根据提供的Comparator进行排序list.stream().sorted((s1,s2)->s1.length()-s2.length()).forEach(System.out::println);//根据长度自定义排序System.out.println("---------Stream<R> map(Function mapper) -------------");//<R> Stream<R> map(Function mapper)       返回由给定函数应用于此流的元素的结果组成的流list.stream().map(s -> s).forEach(System.out::println);//将String转换为StringSystem.out.println("-----------IntStream mapToInt(ToIntFunction mapper)------------------");//IntStream mapToInt(ToIntFunction mapper)  返回一个IntStream其中包含将给定函数应用于此流的元素的结果//跟map性质是一样的, 另有一个Integer求和功能sumList<Integer> list1 = new ArrayList<>();list1.add(100);list1.add(111);list1.add(211);list1.add(311);int sum = list1.stream().mapToInt(s -> s).sum();//求数组的和System.out.println("数组和: "+sum);System.out.println("-------------------求平均值----------------------");list1.stream().mapToInt(s -> s)//将s转换为s.average()//求平均值.ifPresent(System.out::println);//值不为空输出System.out.println("-----------------------Optional<T> findFirst\u200B() 返回Optional描述此流的第一个元素,或空Optional如果流是空的。----------------------------");//Optional<T> findFirst​() 返回Optional描述此流的第一个元素,或空Optional如果流是空的。list1.stream().findFirst().ifPresent(System.out::println);}}

结果:

孙悟空
孙悟能
孙源
-------------- Stream<T> limit(long maxSize) ------------------
孙悟空
齐天大圣
孙悟能
---------------static <T> Stream<T> concat(Stream a, Stream b)-----------------
孙悟空齐天大圣孙悟能孙源王孙孙悟空
齐天大圣
孙悟能
孙源
王孙
-------Stream<T> sorted()   -----------
孙悟空
孙悟能
孙源
王孙
齐天大圣
-------------Stream<T> sorted(Comparator comparator)--------------------
孙源
王孙
孙悟空
孙悟能
齐天大圣
---------Stream<R> map(Function mapper) -------------
孙悟空
齐天大圣
孙悟能
孙源
王孙-----------IntStream mapToInt(ToIntFunction mapper)------------------
数组和: 733-------------------求平均值----------------------
183.25-----------------------Optional<T> findFirst​() 返回Optional描述此流的第一个元素,或空Optional如果流是空的。----------------------------
100

Stream流终结操作方法
终端操作是对流操作的一个结束动作,一般返回 void 或者一个非流的结果。

import java.util.ArrayList;
import java.util.List;/*
Stream流终结操作方法【应用】- 概念终结操作的意思是,执行完此方法之后,Stream流将不能再执行其他操作。
- 常见方法方法名                           说明void forEach(Consumer action) 对此流的每个元素执行操作long count()                    返回此流中的元素数*/
public class StreamDemo1 {public static void main( String[] args ) {List<String> arr = new ArrayList<>();arr.add("大圣");arr.add("齐天大圣");arr.add("大圣2");arr.add("大圣3");System.out.println("---------------void forEach(Consumer action)\t对此流的每个元素执行操作---------------");arr.stream().forEach(System.out::println);System.out.println("--------------------long count()  \t返回此流中的元素数-----------------------");long count = arr.stream().filter(s -> s.startsWith("大")).count();System.out.println(count);//返回第一个字包含大的有几个名字}}

JDK8 新特性Stream流的常用方法相关推荐

  1. stream流_最详细的JDK8新特性————Stream流

    Stream流 在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊 端. 传统集合的多步遍历代码: 几乎所有的集合(如Collect ...

  2. Java JDK8新特性Stream流

    1.Stream流 1. 流,支持处理数据处理操作的源生成的元素序列.流有两个重要特性:1流水线:很多流操作本身会返回一个流,这样多的操作就可以链接起来,形成一个大的流水线.2,内部迭代.流的迭代是在 ...

  3. JDK8新特性Stream流使用详解

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达 ...

  4. Java复习第11天---11.4---Java8新特性---Stream流常用方法3和综合案例

    Java复习第11天---11.4---Java8新特性---Stream流常用方法3和综合案例 目录 文章目录 1.count:计数-终结方法 2.limit:取前几个元素-延迟方法 3.skip: ...

  5. Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2

    Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2 目录 文章目录 1.Stream流特点 2.filter:过滤 3.map:映射 ***后记*** : 内 ...

  6. Java复习第11天---11.2---Java8新特性---Stream流获取方式和常用方法1

    Java复习第11天---11.2---Java8新特性---Stream流获取方式和常用方法1 目录 文章目录 1.Stream流的2中获取方式 1.1.集合的stream方法 1.2.Stream ...

  7. java的collect用法_java8新特性:stream流中collect用法

    java8新特性:stream流中collect用法 java8新特性:stream流中collect用法 1.toList List collectList = Stream.of(1, 2, 3, ...

  8. Java8新特性Stream流详解

    陈老老老板 说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油. 本文是介绍Java8新特性Stream流常用方法超详细教学 说 ...

  9. jdk8新特性Stream基础了解

    Java 8 Stream API 基础了解 1.Stream概念 2.数据源 3.中间操作 4.最终操作 5.Stream使用注意事项 1.java.util.stream.Stream概念 *Ja ...

最新文章

  1. 狄利克雷卷积莫比乌斯反演证明
  2. 初等代数(3):代数方程、指数与对数、复数
  3. 运行python嵌入式要求_在嵌入式IPython实例中运行配置文件启动文件
  4. C# 中关于汉字与16进制转换的代码
  5. 如何提升数据安全治理能力
  6. L1-049 天梯赛座位分配(模拟)
  7. JavaWeb案例(MVC+MySQL+分页功能)+前后端分离
  8. postman自动化测试
  9. 【转】win7旗舰版英文版下载(64位|32位)|Windows7英文版ISO镜像
  10. 华为2019网络挑战赛初赛网络方向部分模拟题及答案
  11. 蜜罐 计算机术语,检测虚机和蜜罐方法的概念 -电脑资料
  12. html 播放视调用本地播放器,用HTML5做一个本地视频播放器
  13. 网页番茄钟(Pomodoro timer)
  14. 计算机的手机储存在哪里,手机wps文件保存在哪里?
  15. 东方梅酒:梅见的新国饮故事
  16. JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil
  17. 笔记本故障:输入密钥界面没有文字
  18. CTF_Misc_【BUUCTF】 杂项——二维码Code
  19. 美国B2签证申请要准备哪些材料?
  20. 数据挖掘实战分享:财政收入影响因素分析及预测(四)

热门文章

  1. JAVA实现无损word转pdf文件完整代码教程
  2. Git最佳实践(init、config、status、add、commit、diff、push) 1.0v
  3. 【罗塞塔石碑】—My Lover(Two.iso)
  4. 拼音读数字(难度系数:1颗星)
  5. SOLR7实践(二)--DIH配置及使用
  6. Mac宝藏软件推荐(笔者也在用)(一)
  7. PHP取整,四舍五入取整、向上取整、向下取整、小数截取
  8. resnet50结构图
  9. 了解工业能源统计的含义、分级以及分类
  10. 如何去开发一个webApp