java8 stream

Java 8 Streams中间操作的完整指南。 带有示例的所有内置Stream API中间操作(方法)列表。

1.概述

在本教程中,我们将学习什么是Java 8 Stream中的中间操作。 所有这些操作都在java.util.stream.Stream

在上一教程中,我们讨论了Java 8 Stream APILambda Expressions

规则:

Java 8 Stream中间操作返回另一个Stream ,该Stream允许您以查询的形式调用多个操作。

在调用终端操作之前,流中间操作不会执行。 所有中间操作都是惰性的,因此直到实际需要处理结果时才执行它们。

在执行管道的终端操作之前,流的遍历不会开始。

这是所有Stream中间操作的列表: 过滤() 地图() flatMap() 不同() sorted() 窥视() 限制() 跳跃(

我们将在后续文章中看到有关每个操作的示例程序。

2. filter()

返回包含此流元素的流匹配给定的谓词

句法:

Stream filter​(Predicate predicate)

例:

 Stream intStream = Stream.of( 1 , 2 , 3 , 4 , 5 );Stream subStream = intStream.filter(value -> value > 3 );long count = subStream.count();System.out.println(count);

输出:

2

该程序将Predicate功能接口用作lambda,并检查数字是否大于3。

3. map()

返回包含以下内容的流将给定功能应用于此流元素的结果

句法:

Stream map​(Function mapper)

例:

 // map() OperationStream strStream = Stream.of( "Welcome" , "To" , "java" , "blog" );Stream subStream2 = strStream.map(string -> {if (string == "java" )return "Java-W3schools" ;return string;});List welomeList = subStream2.collect(Collectors.toList());System.out.println(welomeList);

在此,map函数采用Function的参数类型。 该功能是一个功能接口并具有一种方法apply() 。 此方法采用一个值并返回另一个值。

输出:

[Welcome, To, Java-W3schools, blog]

在此示例中,将单词“ java”替换为“ Java-W3schools”。

map()wrpper类型也属于中间操作类别。mapToDouble(),mapToLong(),mapToInt()

4. flatMap()

此平面图最适合于收藏列表。 我们将显示带有两个列表的示例,以及如何使用它们将它们转换为单个流flatmap()方法。

句法:

Stream flatMap​(Function> mapper)

例:

示例程序可计算两个列表中唯一水果名称的数量。

 Stream flatStream = stream.flatMap(list -> list.stream());//flatStream.forEach(str -> System.out.println(str));long distinctFruites = flatStream.distinct().count();System.out.println(distinctFruites);

输出:

6

并且还看到在使用Stream“ 流已被操作或关闭”时解决方案中最常见的问题。 取消换行后flatStream.forEach(str-> System.out.println(str)); 该程序将异常java.lang.IllegalStateException

类似包装器类型的flatMap()方法,例如flatMapToInt(),flatMapToLong(),flatMapToDouble()

5,distinct()

返回由此流的不同元素组成的流(根据Object.equals(Object))。

对于有序流,对不同元素的选择是稳定的(对于重复元素,将保留在遇到顺序中排在最前面的元素。)对于无序流,则不保证稳定性。

句法:

Stream distinct()

例:

 // distinct() OperationStream fruitsStream = Stream.of( "Apple" , "Jack Fruit" , "Water Melon" Stream fruitsStream = Stream.of( "Water Melon" , "Apple" );Stream distinctStream = fruitsStream.distinct();distinctStream.forEach(name -> System.out.println(name));

输出:

 AppleJack FruitWater Melon

6. sorted()

返回由该流的元素组成的流,并根据自然顺序排序。如果此流的元素不可比较,则在执行终端操作时可能会引发java.lang.ClassCastException。

注意:对于有序流,排序是稳定的。 对于无序流,不保证稳定性。

句法:

Stream sorted()

例:

 // sort() OperationStream vegStream = Stream.of( "tomoto" Stream vegStream = Stream.of( "tomoto" , "Green Chilli" , "Pototo" , "Beet root" );Stream sortedStream = vegStream.sorted();sortedStream.forEach(name -> System.out.println(name));

输出:

 Beet rootGreen ChilliPotototomoto

7. peek()

返回由该流的元素组成的流,并在从结果流中消耗元素时对每个元素另外执行提供的操作。

peek()方法是在Java 8中调试流的最佳方法。eclipse将不支持调试。 注意:我们无法预测并行流管道的peek()调用顺序。

句法:

Stream peek​(Consumer action)

例:

 // peek() OperationStream.of( "one" , "two" , "three" , "four" ).filter(e -> e.length() > 3 ).peek(e -> System.out.println( "Filtered value: " + e)).map(String::toUpperCase).peek(e -> System.out.println( "Mapped value: " + e)).collect(Collectors.toList());

对于每次满足过滤条件的条件,将立即调用peek()方法。 看到输出,您将更好地理解。

输出:

 Filtered value: threeMapped value: THREEFiltered value: fourMapped value: FOUR

8. limit()

返回具有给定大小限制的流。 它将截断流中剩余的元素。

注意: limit()适用于顺序流,不能为并行流提供良好的性能结果。

句法:

Stream limit​( long maxSize)

例:

程序将流限制为前两个元素。

Stream.of( "one" , "two" , "three" , "four" ).limit( 2 ).forEach(item -> System.out.println(item));

输出:

 onetwo

9. skip()

此方法跳过给定的n个元素,并返回Stream。 当要对列表或流中的最后n条记录或行执行任何操作时,这是最有用的。

句法:

Stream skip​( long n)

例:

程序跳过前两个元素并打印其余元素。

Stream.of( "one" , "two" , "three" , "four" , "five" ).skip( 2 ).forEach(item -> System.out.println(item));

输出:

 threefourfive

10.结论

在本教程中,我们已经了解了什么是流中的中间操作。 中间操作如何在新的Java 8 Streams中工作。

并且还讨论了带有示例程序的所有中间方法的列表。

这篇文章中显示的所有程序都通过GitHub进行

翻译自: https://www.javacodegeeks.com/2020/04/java-8-stream-intermediate-operations-methods-examples.html

java8 stream

java8 stream_Java 8 Stream中间操作(方法)示例相关推荐

  1. Java 8 Stream中间操作(方法)示例

    Java 8 Streams中间操作的完整指南. 所有内置Stream API中间操作(方法)的列表以及示例. 1.概述 在本教程中,我们将学习什么是 Java 8 Stream 中的中间操作 . 所 ...

  2. Java8如何对Stream进行排序操作呢?

    转自: Java8如何对Stream进行排序操作呢? 下文讲述Java8中对Stream进行排序操作的方法分享,如下所示: 实现思路:使用sorted()即可实现对Stream进行排序操作 如:sor ...

  3. Java8 Stream流操作在用户系统中的妙用

    在做目前这个项目的时候,发现以前有一个筛选的需求,老程序员是这么做的,先请求Http服务器得到一长串json数据,大概用A4纸打了40多页那么多,然后将这些对象写入到sqlite数据库中,再用数据库查 ...

  4. Java8新特性——Stream流:不同于IO流的流,操作集合数据

    文章目录 Stream流 1.认识Stream流(源码说明) 1.1.Stream流和Collection的区别 1.2.流的获取方式 1.3.流操作和管道 1.4.并行性 1.5.不干扰内政 1.6 ...

  5. 服务器可以pyqt显示吗,用pyqt+socket实现远程操作服务器的一个例子,PyQtsocket,方法,示例...

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要介绍了PyQt+socket实现远程操作服务器的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定 ...

  6. java8 lambda表达式Stream对List常用操作总结

    List最为java编程语音使用最频繁的数据结构之一,经常涉及到对List数据的各种处理,以前我们只能通过遍历的方式,自己去逐条处理,java8提供了Stream能够满足大部分日常对List的操作,如 ...

  7. 通过stream去重_分享几种 Java8 中通过 Stream 对列表进行去重的方法

    几种列表去重的方法 在这里我来分享几种列表去重的方法,算是一次整理吧,如有纰漏,请不吝赐教.1. Stream 的distinct()方法 distinct()是Java8中 Stream 提供的方法 ...

  8. python 循环实现延时_Python延时操作实现方法示例

    本文实例讲述了Python延时操作实现方法.分享给大家供大家参考,具体如下: 在日常的开发中,往往会遇到这样的需求,需要某一个函数在一段时间之后才执行以达到某种特定的效果.此时,我们就需要某种机制,使 ...

  9. java8新特性-stream对map集合进行过滤的方法

    java8新特性-stream对map集合进行过滤的方法 stream对map集合进行过滤的方法

最新文章

  1. 华为CodeCraft2017算法结果检查工具(包含测试用例展示)
  2. Xamarin.Android编译CPU类型选择方式
  3. 腾讯大数据回答2019:鹅厂开源先锋,日均计算量超30万亿,全力打破数据墙
  4. access游戏库不显示 ea_英伟达上线云游戏服务 千款游戏月费4.99美元
  5. python 调用bat失败_要想顺利通过Python面试,你最起码需要达到白银段位!
  6. 阿里云服务器一分价钱一分货,切记!
  7. java ssl 无证书_java – 如何修复SSL – 没有可用的证书
  8. windows获取系统补丁+匿名管道
  9. html用于信息展示的表格源码,Html表格
  10. 免费获取小红伞互联网安全套装2012-90天的小红伞2012激活码激活密钥小红伞
  11. tkinter教程_Tkinter教程–第3部分
  12. .chm 文档打不开
  13. Vmware Fusion
  14. python实现DES加密解密
  15. 解决电脑无法通过网线直连海康摄像机的问题
  16. APP设计邀请功能,用邀请链接还是邀请码比较好呢?
  17. Photoshop CC 2019入门知识手册
  18. ASP.NET Razor 简介
  19. python 画图 设置 中英文字体
  20. IOS开发基础 · SwiftUI · StanfordCS193p Lecture1-2

热门文章

  1. iOS 支付宝应用(备用参考2)
  2. snowfall.jquery.js实现页面飘花效果
  3. 业务流程管理的方法步骤
  4. 【负权图网络流】JZOJ6169.【GDSOI 2019 day1】棋盘
  5. sci计算机二作,sci论文有没有区分一作二作
  6. 论文学习笔记1——《机器学习的理论局限与因果革命的7大火花》(因果推理必将带来现有人工智能领域研究的再一次巨大突破)
  7. 国内主流云服务器性能评测报告
  8. dell G3 3579笔记本更新系统后键盘延迟
  9. python123温度转换答案_Python温度转换基本语法元素分析
  10. 女生学计算机月薪过万的工作,做系统的工作月收入-女生,做什么工作能月收入1到2万?...