JAVA07_Stream流中FindFirst方法查找元素第一个

这篇具有很好参考价值的文章主要介绍了JAVA07_Stream流中FindFirst方法查找元素第一个。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • ①. Stream的findFirst方法在此流中查找第一个元素作为Optional,如果流中没有元素,findFirst返回空的Optional,如果findFirst选择的元素为null,它将抛出NullPointerException
    Optional findFirst()

  • ②. findAny():返回流中的任意一个元素;如果流是空的,则返回空文章来源地址https://www.toymoban.com/news/detail-524458.html

  1. 对于串行流,输出的都是查找第一个元素
  2. 对于并行流,随机获取
    /**
     * Returns an {@link Optional} describing the first element of this stream,
     * or an empty {@code Optional} if the stream is empty.  If the stream has
     * no encounter order, then any element may be returned.
     *
     * <p>This is a <a href="package-summary.html#StreamOps">short-circuiting
     * terminal operation</a>.
     *
     * @return an {@code Optional} describing the first element of this stream,
     * or an empty {@code Optional} if the stream is empty
     * @throws NullPointerException if the element selected is null
     * 返回一个描述次流的第一个元素的Optional,如果流为空,则返回一个空的Optional,如果没有遇到顺序,则可以返回任何元素
     * 这是一个短路终端操作
     * 抛出: NullPointException - 如果选择的元素为null
     */
    Optional<T> findFirst();

    /**
     * Returns an {@link Optional} describing some element of the stream, or an
     * empty {@code Optional} if the stream is empty.
     *
     * <p>This is a <a href="package-summary.html#StreamOps">short-circuiting
     * terminal operation</a>.
     *
     * <p>The behavior of this operation is explicitly nondeterministic; it is
     * free to select any element in the stream.  This is to allow for maximal
     * performance in parallel operations; the cost is that multiple invocations
     * on the same source may not return the same result.  (If a stable result
     * is desired, use {@link #findFirst()} instead.)
     *
     * @return an {@code Optional} describing some element of this stream, or an
     * empty {@code Optional} if the stream is empty
     * @throws NullPointerException if the element selected is null
     * @see #findFirst()
     * 返回一个描述流的某些元素的Optional,如果流为空,则返回一个空Optional
     * 这是一个短路终端操作
     * 这个流操作的行为是明确的非确定下的,可以自由选择流中的任何元素。这是为了在并行操作中实现最大的性能。
     * 代价是对同一源多次调用可能不会返回相同的结果(如果需要稳定的结果,使用findFirst())
     * 抛出: NullPointException - 如果选择的元素为null
     */
    Optional<T> findAny();
  • ③. 假设我们有一个整数流,并对其调用findFirst方法
public class FindFirstDemo1 {
  public static void main(String[] args) {
	List<String> list = Arrays.asList("Vijay", "Suresh", "Vinod");
	String output = list.stream()
	  .filter(e -> e.startsWith("V")) // Vijay, Vinod
	  .findFirst() //Vijay
	  .orElse("NA");
	// Vijay
	System.out.println(output);

	List<Integer> numList = Arrays.asList(31, 32, 33, 34);
	numList.stream()
	  .filter(n -> n % 2 == 0) // 32, 34
	  .findFirst() //32
	  .ifPresent(e -> System.out.println(e));//32
  }
} 
	//0.准备一个数组
	String[] strs = {"aaa","bbb","ccc","ddddd","abcdefg"};
	// 1.查找第一个元素
	Optional<String> first = Stream.of(strs).findFirst();
	System.out.println("获取第一个元素 : "+first.get()); // 通过Optional的get()方法取值

	//2.查找任意一个元素 - > 对于串行流,输出的都是查找第一个元素
	Optional<String> any = Stream.of(strs).findAny();
	System.out.println("获取任意一个元素 :"+any.get()); // 通过Optional的get()方法取值

	//2.查找任意一个元素 - > 对于并行流,随机获取
	Optional<String> parallelFindAny = Arrays.asList(strs).parallelStream().findAny();
	System.out.println("获取任意一个元素 :"+parallelFindAny.get()); // 通过Optional的get()方法取值

到了这里,关于JAVA07_Stream流中FindFirst方法查找元素第一个的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java基础】Stream 流中 Collectors.toMap 的用法

    Collectors.toMap() 方法是把 List 转 Map 的操作 1.1、如果不是对象,是数组,怎么转成map? 按照规范来写的话,最好所有toMap,都要将这个异常提前考虑进去,不然有时候会报重复主键异常,这也是正例的写法,上面的属于反例的写法。 2.1、Collectors.toMap 有三个重载方法:  参数解

    2024年02月14日
    浏览(33)
  • java8新特性Stream流中anyMatch和allMatch和noneMatch的使用!!!

    判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false。 接口定义: boolean anyMatch(Predicate? super T predicate); 方法描述: 在anyMatch 接口定义中是接收 Predicate 类型参数,在Lamdba表达式中 PredicateT 是接收一个T类型参数,然后经过逻辑验证返

    2024年02月08日
    浏览(42)
  • 利用java语言中的stream流操作判断一个数组中是否有重复元素

    判断数组中是否有重复元素可以说是每一个编程语言初学者都会遇到的题目,常见的各种搜索算法本文不做赘述了,我们这次介绍的是利用java语言中特有的stream流操作来判断通用类型数组是否包含重复元素。 首先我们声明一个泛型方法: 表明该方法适用于所有类型的数组。

    2024年02月12日
    浏览(30)
  • 在排序数组中查找元素的第一个和最后一个位置(Java详解)

    给你一个按照 非递减 顺序排列的整数数组  nums ,和一个目标值  target 。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值  target ,返回  [-1, -1] 。 你必须设计并实现时间复杂度为   O(log n)  的算法解决此问题。 示例: 输入:nums = [5,7,7,8,8

    2024年02月03日
    浏览(41)
  • 【100个 Unity实用技能】☀️ | C#泛型集合常用方法,查找符合要求的第一个元素并返回

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2023年04月08日
    浏览(32)
  • 如何在Stream流中分组统计

    上面是今天碰到需求,之前就做过类似的分组统计,这个相对来说比较简单,统计的也少, 序号 和 总预约人数 这两部分交给前端了,不需要由后端统计,后端统计一下 预约日期 和 检查项目 和 预约人数 就行;

    2024年02月13日
    浏览(46)
  • 二分查找:34. 在排序数组中查找元素的第一个和最后一个位置

    个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C++》《算法》 本篇文章仅是作为小白的我的一些理解,,如果有错误的地方,希望大佬们指出。 题目链接: 34. 在排序数组中查找元素的第一个和最后一个位置 本题数组元素不唯一,可能存在多个target,我们就是

    2024年02月08日
    浏览(33)
  • 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)

    二分查找到目标值然后左右找到坐标 问题在于:找左右坐标的时候时间复杂度不是 O(logN) 之前提到过二分查找不仅可找到相等的数值,更关键的是 它可以将数组分为截然不同的两种情况 ,因此我们可以借助这个性质找到 第一个大于等于 target 的值(左下标) 和 第一个大于

    2024年01月22日
    浏览(34)
  • 二分查找实例1(在排序数组中查找元素的第一个和最后一个位置)

    给你一个按照非递减顺序排列的整数数组  nums ,和一个目标值  target 。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值  target ,返回  [-1, -1] 。 你必须设计并实现时间复杂度为  O(log n)  的算法解决此问题。 示例 1: 示例 2: 示例 3: 提示

    2024年02月09日
    浏览(31)
  • Stream流中,根据对象去重+指定对象中的属性去重

    首先定义一个学生类: 在main方法中构造四个对象,其中第四个对象为重复对象,现在进行对象的去重、以及对象中某一属性的去重操作 一、根据对象去重: 以下代码写于main函数中: 运行结果如下,可以看到,stream流的distinct只是将对象去重,将相同的第三个和第四个对象

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包