JDK8之findAny和findFirst

简介: JDK8之findAny和findFirst

写在前面


JDK8出世后,很多编程方式发生了一些变化,比如函数式编程,Lambda表达式,这些都使得我们的编程更有效率。


其中,JDK8中的Stream相关API,大大的提高了我们在实际开发中的效率,原本使用十行代码,先如今可以用一行代码,而且更高的效率来代替。


最近正在学习Stream,所以特此记录一些有必要的问题,希望对大家有所帮助。


问题


今天我们的问题就是Stream流中的findAny和findFirst有着什么样的区别?


在工作中如果使用不当,随着项目运行时间的加长,会突然爆发一些很麻烦的问题。遇见疑惑,解决疑惑,才是根本所在。


解答


首先,这两个方法都是用来找出并返回所查询列表中的第一个元素对象,这两者又有些差异。


让我们来看一下平时我们使用的代码示例。


具体应用代码如下:


List<String> list0 = Arrays.asList("纪晓岚", "和珅", "黄三", "张三", "张四","黄四");
List<String> list1 = Arrays.asList("纪晓岚", "和珅", "黄三", "张三", "张四","黄四");
Optional<String> findFirst = list0.Stream().filter(s -> s.startsWith("张")).findFirst();
Optional<String> fidnAny = list1.Stream().filter(s -> s.startsWith("张")).findAny();
System.out.println(findFirst.get()); 
System.out.println(fidnAny.get()); //会随机地打印出Jack/Jill/Julia


第一行的输出,无论执行多少次,都只会打印出“张三”。


第二行的输出,则是会随机的打印出张三、张四。


其中的findAny方法,是会随机返回一个元素,所以如果存在多个值的话,使用此方法时,不能保证多次返回的元素的一致性。


而findFrist方法,就是切实的返回集合中的第一个元素对象了。


总结


经过我们的例子来看,findAny方法和findFirst方法的区别很明显,就是前者随机查出匹配的元素,而后者是只拿取最小集合索引的元素,也就是依次遍历的第一个元素对象。


相关文章
|
10月前
|
并行计算 安全 Java
JDK1.8介绍
JDK 1.8是Java Development Kit(Java开发工具包)的一个版本,也被称为Java 8。它引入了许多新特性和改进,对Java编程语言和平台进行了重要的更新。以下是JDK 1.8的一些主要特点:
831 0
|
10月前
|
存储 网络协议 安全
JDK 9 介绍
Java 9提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的REPL工具: jshell, JDK编译工具,语法层面的改变:Java公共API和私有代码,以及安全增强、扩展提升、性能管理改善等。
87 0
|
10月前
|
存储 算法 Java
带你了解JDK
JDK(Java Development Kit)是Java开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源。下面是JDK的一些重点介绍: 1. Java编译器(javac):JDK包含了Java编译器,可以将Java源代码编译为Java字节码。通过编译器,开发人员可以将Java源代码转换为可在JVM上运行的字节码文件。 2. 核心类库(Core Libraries):JDK提供了丰富的核心类库,其中包含了常用的类和接口,用于处理字符串、集合、IO、网络通信等各种操作。开发人员可以利用这些类库来构建功能丰富的Java应用程序。 3. 调试工具(Debugging Tools)
51 0
|
11月前
|
Java Shell 开发工具
安装多个jdk
安装多个jdk
|
NoSQL Java 数据库
JDK的安装
现在电脑上很多软件都是基于JAVA语言开发的,并且在学习JAVA编程时,JDK的安装变得十分平常。这里展示了一个关联NEO4J图数据库的JDK安装教程。
117 0
|
Java 程序员 编译器
【错误收集】JDK的安装
【错误收集】JDK的安装
74 0
|
Java
jdk问题
错误: java.lang.UnsatisfiedLinkError: no tcnative-1 in java.library.path: [C:\User
112 0
jdk问题
|
Java
JDK的反锯齿
JDK的反锯齿
57 0
|
Oracle Java 关系型数据库
JDK的安装-详细版
JDK的安装-详细版
128 0
JDK的安装-详细版
|
Java
JDK是什么?
JDK是什么?JDK中主要包括几类?自制脑图
147 0
JDK是什么?