Java 8 中的 Spliterator17 Mar 2025 | 5 分钟阅读 它类似于 Java 中用于遍历源(Collection、Generator 函数或 IO channel)元素的其他迭代器。Spliterator 是 Streams 的基础工具,尤其是并行 Streams。 为了对集合使用Spliterator,我们通过调用 Collection 接口中可用的 spliterator() 方法来创建一个 Spliterator 对象。 Spliterator 接口提供了以下八种方法 1. characteristics()这是最重要的方法之一,用于获取此 Spliterator 及其元素的特征集。返回的结果来自以下选项:
characteristics() 方法的语法如下: characteristics() 方法不接受任何参数,并以整数值编码的形式返回调用 spliterator 的特征。 2. estimateSize()estimateSize() 方法用于获取剩余要迭代的元素数量的估计值。如果源是无限的、未知的或计算成本过高,它将返回 Long.MAX_VALUE。 estimateSize() 方法的语法如下: estimateSize() 方法不接受任何参数,并返回剩余要迭代的元素数量的估计值。 3. getExactSizeIfKnown()它与 estimateSize() 方法类似。唯一的区别是,如果源是无限的、未知的或计算成本过高,getExactSizeIfKnown() 方法将返回 -1。 getExactSizeIfKnown() 方法的语法如下: 该方法不接受任何参数,并返回剩余要迭代的元素数量。 4. getComparator()它用于对 Spliterator 的源进行排序。排序由 Comparator 完成,并将其作为结果返回。 getComparator() 方法的语法如下: getComparator() 方法不接受任何参数,并返回以下值和异常:
5. hasCharacteristics()hasCharacteristics() 方法用于识别 Spilitirator 的特征是否包含所有给定的特征。 hasCharacteristics() 方法的语法如下: hasCharacteristics() 方法将 characteristics 作为参数,并在 spliterator 中存在给定特征时返回 true 或 false。 6. tryAdvance(Consumer <?super T> action)tryAdvance() 方法用于对剩余元素执行给定操作并返回 true。如果没有元素,则返回 false。 当 Spliterator 有序时,将对下一个元素(按遇到的顺序)执行给定的操作。 tryAdvance() 方法的语法如下: tryAdvance() 方法将 action 作为参数。如果存在下一个元素,则返回 true;如果剩余元素,则返回 false。 当指定的 action 为 null 时,它还可以抛出 NullPointerException。 7. forEachRemaining(Consumer<?super T> action)forEachRemaining() 方法用于在当前线程中按顺序对每个元素执行给定操作。它执行操作,直到 action 抛出 NullPointerException 或所有元素都已处理完毕。 当 spliterator 有序时,操作将按遇到的顺序执行。 forEachRemaining() 方法具有以下语法: forEachRemaining() 方法将 action 作为参数,并返回 void。 当指定的 action 为 null 时,forEachRemaining() 方法还会抛出 NullPointerException。 8. Spliterator <T> trySplit()trySplit() 方法仅在可能的情况下分割 spliterator,并返回一个指向分区新 spliterator 的引用。当 spliterator 无法分割时,它返回 null。 如果分割过程成功完成,原始 spliterator 将遍历序列的一部分,而返回的 spliterator 将遍历另一部分。 trySplit() 方法的语法如下: trySplit() 方法不接受任何参数,并返回一个涵盖部分元素的 Spliterator,或者在 spliterator 无法分割时返回 null。 让我们通过一些示例来理解上述所有方法的用法。 SpliteratorExample1.java 输出 ![]() SpliteratorExample2.java 输出 ![]() 下一个主题Jackson 中的树模型节点 |
类文件是 .java 文件的编译形式。当我们编译 Java 源代码(.java 文件)时,它会生成一个 .class 文件。如果一个 Java 程序有多个类,在这种情况下,编译源文件后,我们将得到相同的...
阅读 3 分钟
JDK 8 引入了 DoublePredicate 接口。一个名为 DoublePredicate (java.util.function.DoublePredicate) 的函数式接口在其内部指定了三个默认方法和一个抽象方法。这个接口是 Predicate 接口的一个更专业的版本。因为它只有一个抽象方法 test (double value)...
阅读 3 分钟
构造函数重载 在 Java 中,我们可以像方法一样重载构造函数。构造函数重载可以定义为拥有多个具有不同参数的构造函数,以便每个构造函数都可以执行不同的任务。要了解更多关于 Java 中的构造函数重载的信息,请参阅构造函数重载的特点 相同的……
7 分钟阅读
?在本节中,我们将创建一个 Java 程序,以根据日期获取星期几的名称。在处理 Java 中的日期和时间时,会用到以下类。Calendar 类:该类属于 java.util 包。它继承了 Object 类,并且...
阅读 4 分钟
Java 基本数据类型 Java 中的基本数据类型是数据操作的基石。它们是 Java 语言中最基本的数据类型。Java 是一种静态类型编程语言,这意味着所有变量在使用前都必须声明。基本数据...
5 分钟阅读
Web数据提取,有时也称为Web抓取或Web爬取,是从网站获取信息的方法。由于其强大的库和适应性,Java是涉及Web抓取工作的流行编程语言。在本节中,我们将讨论Web抓取...
阅读 3 分钟
涉及根据二叉树的根节点的水平距离,按列组织和打印二叉树的节点。使用 TreeMap 和层序遍历,节点按垂直顺序分组和显示,确保树的结构化视图。输入:一个具有……
14 分钟阅读
Java 编程语言的 FileInputStream 类用于以面向字节的方式从文件中读取数据。它有几个数据读取方法,包括 read()、read(byte[]) 和 read(byte[], int, int)。FileInputStream 类从 Object 类继承的 finalise() 方法是其中一个...
阅读 4 分钟
List 和 ArrayList 之间的区别 Java 集合提供了处理对象组的架构。集合表示对象的单个单元。它允许我们将对象组作为一个单元进行存储和操作。我们可以轻松地执行许多操作,例如...
5 分钟阅读
在 Java 中,用于输入身份验证凭据以访问受限页面的表单称为登录表单。登录表单仅包含两个字段,即用户名和密码。每个用户都应拥有唯一的用户名,该用户名可以是电子邮件、电话号码或...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India