流(Stream)是在Java中引入的,以帮助开发人员从一系列对象中执行聚合操作。在Java 9中,使用较少的方法就可以使流更好。

takeWhile(Predicate接口)

语法

default Stream takeWhile(Predicate super T> predicate)

takeWhile方法获取所有值直到predicate返回false。 在有序流的情况下,它返回一个流,该流包含从此流中匹配给定predicate的元素的最长前缀。

示例

import java.util.stream.Stream;

public class Tester {

public static void main(String[] args) {

Stream.of("a","b","c","","e","f").takeWhile(s->!s.isEmpty())

.forEach(System.out::print);

}

}

takeWhile方法获取所有a,b和c值,然后当字符串为空,它将停止执行。

abc

dropWhile(Predicate接口)

语法

default Stream dropWhile(Predicate super T> predicate)

dropWhile方法在开始时丢弃所有值,直到谓词返回true。 在排序流的情况下,它返回包含该流剩余元素的流后,删除与给定predicate匹配的元素的最长前缀。

示例

import java.util.stream.Stream;

public class Tester {

public static void main(String[] args) {

Stream.of("a","b","c","","e","f").dropWhile(s-> !s.isEmpty())

.forEach(System.out::print);

System.out.println();

Stream.of("a","b","c","","e","","f").dropWhile(s-> !s.isEmpty())

.forEach(System.out::print);

}

}

dropWhile方法删除a,b和c值,然后当字符串为空,它将获取所有值。

ef

ef

iterate语法

static Stream iterate(T seed, Predicate super T> hasNext, UnaryOperator next)

iterate方法现在具有hasNext作为参数,当hasNext Predicate返回false,它将停止循环。

示例

import java.util.stream.IntStream;

public class Tester {

public static void main(String[] args) {

IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println);

}

}

执行上面代码,输出结果如下 -

3

6

9

ofNullable语法

static Stream ofNullable(T t)

ofNullable方法被引入以防止NullPointerExceptions并避免对流进行空检查。 此方法返回包含单个元素的顺序流,如果非空(null)。否则返回空流。

语法

import java.util.stream.Stream;

public class Tester {

public static void main(String[] args) {

long count = Stream.ofNullable(100).count();

System.out.println(count);

count = Stream.ofNullable(null).count();

System.out.println(count);

}

}

执行上面示例代码,得到以下结果 -

1

0

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

java9 stream_Java9 Stream API相关推荐

  1. java9 反应编程_Java9第四篇-Reactive Stream API响应式编程

    file 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把ja ...

  2. java9新特性--jShell--命令语法改进:try语和接口的私有方法--String存储结构变更--集合工厂方法--模块化系统--InputStream 加强--增强的 Stream API

    目录 Java 9 的新特性 JDK 和 JRE 目录结构的改变 模块化系统: Jigsaw -> Modularity 实现目标 模块 结构 jShell命令 产生背景 设计理念 实现目标 j ...

  3. 【Java8新特性】关于Java8的Stream API,看这一篇就够了!!

    写在前面 Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一个则是 Stream API(java.util.stream.*)  ,那什么是Stream API呢?Java8中 ...

  4. Java 8中Stream API的这些奇技淫巧!你都Get到了吗?

    作者:我是你的小眼睛儿 https://www.jianshu.com/p/9fe8632d0bc2 Stream简介 1.Java 8引入了全新的Stream API.这里的Stream和I/O流不 ...

  5. 使用 Stream API 高逼格 优化 Java 代码!

    作者 | 何甜甜在吗 来源 | https://juejin.cn/post/6844903945005957127 使用Stream API优化代码 Java8的新特性主要是Lambda表达式和流, ...

  6. Java 8 中 Stream API 的奇技淫巧

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 我是你的小眼睛儿 来源 | jianshu.c ...

  7. Java 8 Stream Api 中的 map和 flatMap 操作

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1.前言 Java 8  ...

  8. Java 8 Stream Api 中的 skip 和 limit 操作

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 Java 8 Stream API 中的sk ...

  9. java遍历栈_Java中使用StackWalker和Stream API进行堆栈遍历

    1.Java 9以前堆栈遍历到目前为止,官方解决方案是获取当前线程并调用其getStackTrace()方法: StackTraceElement[] stackTraceElements = Thr ...

最新文章

  1. npm install 报权限错误,permission denied
  2. (JavaWeb)HttpServletResponse和HttpServletRequest
  3. html文字字号不改变,如何在不改变div大小的情况下更改HTML / css中的字体大小?...
  4. 主持人副语言包括什么_央视主持人大赛,董卿最精彩的这几段点评,居然被剪掉了...
  5. mvn 命令向本地仓库上传 jar
  6. 基于swiper和Less的小米商城
  7. 如何制作linux系统硬盘,手把手带你自制Linux系统之二 简易Linux的制作
  8. js string函数之slice,indexOf,split联合获取参数
  9. Julia : 如何生成一个水仙花数?
  10. 高通手机调试烧录—QFIL工具
  11. uefi模式下修改Intel网卡MAC地址
  12. hdu6184 判断三元环
  13. sd 0:0:0:0: [sda] Assuming drive cache: write through错误解决 本人实测!
  14. Spark基础(五)SparkSteaming
  15. hyu 1698 Just a Hook
  16. 开源协议之Code Project Open License (CPOL)
  17. 人工蜂群算法c语言程序,基于人工蜂群算法的炼钢连铸生产调度方法研究
  18. 21. A1088 Rational Arithmetic
  19. 华为鸿蒙最大合作伙伴,全球第三大手机系统「鸿蒙」上线,这19款能抢先用…...
  20. nRF52832:在 macOS 下使用 SEGGER Embedded Studio(SES)搭建开发环境

热门文章

  1. 大型企业都在用的Python反爬虫手段,破了它!
  2. Linux常用命令(1)
  3. 案例一:网站模拟登录
  4. 分布式系统以及CAP原理
  5. Spark Streaming 遇到 kafka
  6. Flask-SQLAlchemy 对数据库的过滤查询
  7. 每天进步一点点《ML - 基于层次的聚类》
  8. 漫步线性代数二十——快速傅里叶变换(下)
  9. python中os.path.join()的循环用法_Python os.path.join()用法及代码示例
  10. python 时间_Python-基础-时间日期处理小结