首页 > 编程语言 >无涯教程-Java9 - Stream API增强

无涯教程-Java9 - Stream API增强

时间:2023-12-26 21:31:55浏览次数:44  
标签:takeWhile Stream System 无涯 API dropWhile public out

Java 9 改进的 Stream API 添加了一些便利的方法,使流处理更容易,并使用收集器编写复杂的查询。

Java 9 为 Stream 新增了几个方法:dropWhile、takeWhile、ofNullable,为 iterate 方法新增了一个重载方法。

takeWhile 语法

default Stream<T> takeWhile(Predicate<? super T> predicate)

takeWhile方法使用一个断言作为参数,返回给定 Stream 的子集直到断言语句第一次返回 false。如果第一个值不满足断言条件,将返回一个空的 Stream

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语法 

default Stream<T> dropWhile(Predicate<? super T> predicate)

dropWhile 方法和 takeWhile 作用相反的,使用一个断言作为参数,直到断言语句第一次返回 true 才返回给定 Stream 的子集。

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 <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)

iterate方法现在具有hasNext断言作为参数,一旦hasNext断言返回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 <T> Stream<T> ofNullable(T t)

引入了ofNullable方法以防止NullPointerExceptions并避免对Stream进行空检查。 此方法返回一个包含单个元素的顺序Stream,否则返回一个空Stream。

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

参考链接

https://www.learnfk.com/java/java9-stream-api-improvements.html

标签:takeWhile,Stream,System,无涯,API,dropWhile,public,out
From: https://blog.51cto.com/u_14033984/8987905

相关文章

  • 亿级并发,API网关等核心组件,如何设计?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • stream的优化:java封装的拆箱与装箱的弊端
    authors.stream().map(author->author.getAge).map(age->age+10)//Stream<Integer>.filter(age>18)//Stream<Integer>.foreach(System.out::println);上述是一个简单的stream流的使用,当我们拆开第二个map,或者filter的时候会发现,传入和传出的参数都是Intege......
  • java基础语法API之GUI图形化界面1
    一:概述虽然现在在开发中,前后端交互,用户所看到的界面都是前端实现的,但是java自身的图形化界面,对于java学习初学者还是需要了解的。对于开发是有利的。二:具体说明<1>GUI介绍java中为GUI相关的API在java.awt包和java.swing包中。java.awtawt是这三个单词首字母的缩写,翻译过来是抽象窗......
  • 无涯教程-Java9 - 私有接口方法
    在Java8之前,接口可以具有以下类型的变量/方法。Constantvariables(常量)Abstractmethods  (抽象方法)因此,无涯教程不能在接口中实现方法实现,或更确切地说,不能在Java8之前拥有默认实现。请参见示例。publicclassTester{publicstaticvoidmain(String[]args)......
  • API 参考与帮助内容:一站式开发与使用者支援
    API文档API文档是旨在了解API详细信息的综合指南。通常,它们包括端点、请求示例、响应类别和示例以及错误代码等信息。API文档可帮助开发人员了解API端点的具体细节,并了解如何将API成功集成到他们的软件中。文档生成工具API文档生成工具是直接从源代码创建API文档的......
  • 无涯教程-Java9 - Process API增强
    在Java9ProcessAPI中,负责控制和管理操作系统进程的API已得到很大改进。ProcessHandle类提供了检查进程活动性和销毁进程的方法。它具有onExit方法,CompletableFuture类可以在进程退出时异步执行操作。importjava.time.ZoneId;importjava.util.stream.Stream;importjava.......
  • 07-Redis 多API开发实践
    Redis提供了各类开发语言的API,方便开发语言连接使用Redis。https://redis.io/clients官方网站提供了不同开发语言的API程序。网中,给我们提供了很多种Python连接redis的API,我们通常选择有“笑脸”并且带有“星号”的使用这里我们推荐使用redis-py.redis的多API支持python为......
  • API 参考与帮助内容:一站式开发与使用者支援
    API文档API文档是旨在了解API详细信息的综合指南。通常,它们包括端点、请求示例、响应类别和示例以及错误代码等信息。API文档可帮助开发人员了解API端点的具体细节,并了解如何将API成功集成到他们的软件中。文档生成工具API文档生成工具是直接从源代码创建API文档的......
  • [Nginx] API请求体过大时,报:Nginx 413 Request Entity Too Large [转载]
    1问题描述此问题(通过方法1)已解决,但整体的解决思路,参考自网友,故著名为【转载】文章昨晚压测时,通过API请求10000个设备的若干信号(5个)状态时,Postman返回Nginx的如下错误API整个请求有1.37MB413RequestEntityTooLarge2问题分析通过字面意思,即可知悉:nginx的cl......
  • 基于百度API的图像处理实现
    软件构造的小实验,现给出源码造福未来学弟依赖<!--https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp--><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.1</......