java streams

这篇文章着眼于使用JShell的Java 9 Streams API。 Streams API的更改以Java 8中Streams的成功为基础,并引入了许多实用程序方法– takeWhile,dropWhile和iterate。 这篇文章延续了My Top Java 9功能,并使用Jshell探索了这些方法。

流API

Streams API和Lambda是Java 8最成功的功能,而Java 9的更改基于Java 8的一些新实用程序方法

jshell> Stream.of(1,2,3,4,5).takeWhile(p->p<3).forEach(System.out::print);
12

现在让我们返回所有大于3的值,并且我们看到谓词立即返回false,并且没有任何返回值

jshell> Stream.of(1,2,3,4,5).takeWhile(p -> p > 3).forEach(System.out::print);jshell>
  • 无序列表–直到谓词失败的最长值列表,尽管下游可能存在满足谓词的值,但这些值不会返回

我们可以在下面看到,即使最后一个元素为1,列表也只返回2,而有序列表将返回1和2 –

jshell> Stream.of(2,3,6,5,1).takeWhile(p -> p < 3).forEach(System.out::print);
2

dropWhile提供与takeWhile相反的行为,因此在谓词为true时删除记录。 和以前一样,我们对排序和未排序列表也有类似的考虑。

  • 有序列表–将返回最长的记录列表,不包括满足谓词的那些元素
jshell> Stream.of(1,2,3,4,5).dropWhile(p -> p < 3).forEach(System.out::print);
345
  • 无序列表–将删除满足谓词的第一条记录–
jshell> Stream.of(2,3,6,5,1).dropWhile(p -> p < 3).forEach(System.out::print);
3651jshell> Stream.of(1,2,3,5,6).dropWhile(p -> p < 3).forEach(System.out::print);
365

dropWhile / takeWhile结论

结论是,除非有副作用在代码中是可接受的,否则在处理无序列表时需要注意。 尽管我无法想到一个可以接受无序列表的随机元素的用例,但是我确信其中存在一些。

这以类似于for循环的方式运行。 取一个起始值(T种子),退出条件(谓词)
hasNext)以及是否具有下一个值(谓词)
hasNext)

迭代方法附加了退出条件–

jshell> Stream.iterate(1, i -> i < 6, i -> i + 1).forEach(System.out::println);
1
2
3
4
5

结论

dropWhile和takeWhile为Java Streams API提供了一些有用的实用程序方法。 主要含义是您的流是有序的还是无序的。 Stream.iterate方法允许我们在Stream内部具有for循环功能。 我期待听到人们使用这些新方法的经验。

翻译自: https://www.javacodegeeks.com/2017/11/java-9-streams-api-using-jshell.html

java streams

java streams_使用JShell的Java 9 Streams API相关推荐

  1. java repl_Java REPL – jshell

    java repl Java REPL or jshell is the new tool introduced in java 9. Today we will look into Java REP ...

  2. 使用JShell的Java 9 Streams API

    这篇文章着眼于使用JShell的Java 9 Streams API. Streams API的更改以Java 8中Streams的成功为基础,并引入了许多实用程序方法– takeWhile,drop ...

  3. java8 streams_当Java 8 Streams API不够用时

    java8 streams Java 8与往常一样是妥协和向后兼容的版本. JSR-335专家组可能尚未与某些读者就某些功能的范围或可行性达成一致的版本 . 请参阅Brian Goetz关于为什么-的 ...

  4. JShell:Java REPL综合指南

    \ 本文要点 \\ Java Shell或JShell是官方提供的读取-求值-打印-循环,通常称为REPL,是在Java 9中引入的.\\t JShell提供了一个交互式shell,用于快速原型.调试 ...

  5. Java中映射怎么实现_我们如何在Java 9的JShell中实现映射?

    JShell是Java 9中引入的Java Shell工具.它是一个交互式工具,可以读取输入,执行输入并在命令行提示符下打印输出.我们不需要像Java类一样编写一种方法来执行它.main() 我们可以 ...

  6. Java 9:JShell

    JShell是Java 9中引入的新工具,用于评估在命令行上输入的Java语句. 它是Java平台上第一个正式的REPL(读取-评估-打印循环)实现,非常适合尝试Java代码而无需启动IDE或编写完整 ...

  7. Java 8 Streams API:对流进行分组和分区

    这篇文章展示了如何使用Streams API中可用的Collectors将具有groupingBy的流元素和具有partitioningBy的流元素进行groupingBy . 考虑一系列Employ ...

  8. Java SE 8新功能介绍:使用Streams API处理集合

    使用Java SE 8 Streams的代码更干净,易读且功能强大..... 在" Java SE 8新功能介绍"系列的这篇文章中,我们将深入解释和探索代码,以了解如何使用流遍历集 ...

  9. 当Java 8 Streams API不够用时

    Java 8与往常一样是妥协和向后兼容的版本. JSR-335专家组可能无法与某些读者就某些功能的范围或可行性达成一致的发行版. 请参阅Brian Goetz关于为什么-的一些具体解释. -Java ...

最新文章

  1. [YTU]_2008( 简单编码)
  2. Promethus搭建 K8S 集群节点资源监控系统
  3. 星战7将映 追忆那些年存储你身边大数据
  4. linux数据泵恢复,Oracle Linux环境中使用数据泵的形式还原Oracle数据库
  5. Android service 和 client的进程通信和消息回调--AIDL
  6. c++incline函数
  7. VBA实现数据库中的字段处理(下划线去掉,后面的字母变大写)之版本1.0。
  8. Get_HD_Serial() 获得磁盘驱动器序列号
  9. selenium ruby和java_针对Ruby的Selenium WebDriver安装指南
  10. 洛谷P3379 【模板】最近公共祖先(LCA)(树链剖分)
  11. macOS Monterey 兼容哪些 Mac?
  12. mac多开屏幕_MAC外接屏幕一键开启HiDPI,支持Mojave
  13. win 10 设置静态ip 子网前缀长度
  14. 外研社计算机英语试题,外研社七年级下册英语期末试卷
  15. 查询数据库表空间文件位置及扩充表空间,查询表空间容量
  16. 面试了15位来自985/211高校的2020届研究生之后的思考
  17. css3+html5——机器猫哆啦A梦+手、脚、头动起来!
  18. c# 使用Microsoft.Office.Interop.Excel 对Excel操作
  19. 【STC15】定时器2模式0作为波特率发生器示例程序
  20. $oracle什么意思,oracle惯用缩写的含义

热门文章

  1. [CQOI]九连环(FFT优化+高精)
  2. 学习手记(2021/3/19~?)
  3. 51nod1676-无向图同构【乱搞】
  4. 【结论】单元格(jzoj 1509)
  5. 38、JAVA_WEB开发基础之下载功能
  6. 为什么选择微服务架构?如何取舍?
  7. MySQL count()函数
  8. 集合框架 Queue---BlockingQueue详解
  9. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
  10. Java 内存模型 JMM 详解