java 文件分割器_Java分割器

java 文件分割器

Java Spliterator is one of the four iterators – Enumeration, Iterator, ListIterator and Spliterator.

Java的Spliterator是四个迭代器之一-枚举, 迭代器的ListIterator和Spliterator。

Java分割器 (Java Spliterator)

Like Iterator and ListIterator, Spliterator is a Java Iterator, which is used to iterate elements one-by-one from a List implemented object.

像Iterator和ListIterator一样,Spliterator是Java迭代器,用于从List实现的对象中逐个迭代元素。

Some important points about Java Spliterator are:

关于Java Spliterator的一些重要点是:

  1. Java Spliterator is an interface in Java Collection API.

    Java Spliterator是Java Collection API中的接口。
  2. Spliterator is introduced in Java 8 release in java.util package.

    Java 8发行版的java.util软件包中引入了Spliterator。
  3. It supports Parallel Programming functionality.

    它支持并行编程功能。
  4. We can use it for both Collection API and Stream API classes.

    我们可以将其用于Collection API和Stream API类。
  5. It provides characteristics about Collection or API objects.

    它提供有关Collection或API对象的特征。
  6. We can NOT use this Iterator for Map implemented classes.

    我们不能将此Iterator用于Map实现的类。
  7. It uses tryAdvance() method to iterate elements individually in multiple Threads to support Parallel Processing.

    它使用tryAdvance()方法分别迭代多个线程中的元素,以支持并行处理。
  8. It uses forEachRemaining() method to iterate elements sequentially in a single Thread.

    它使用forEachRemaining()方法在单个Thread中依次迭代元素。
  9. It uses trySplit() method to divide itself into Sub-Spliterators to support Parallel Processing.

    它使用trySplit()方法将自身分为子拆分器,以支持并行处理。
  10. Spliterator supports both Sequential and Parallel processing of data.

    分离器支持数据的顺序和并行处理。

Spliterator itself does not provide the parallel programming behavior. However, it provides some methods to support it. Developers should utilize Spliterator interface methods and implement parallel programming by using Fork/Join Framework (one good approach).

分离器本身不提供并行编程行为。 但是,它提供了一些支持它的方法。 开发人员应利用Spliterator接口方法,并使用Fork / Join Framework实现并行编程(一种不错的方法)。

分离器的主要功能 (Main Functionalities of Spliterator)
  • Splitting the source data.

    拆分源数据。
  • Processing the source data.

    处理源数据。

Java Spliterator类图 (Java Spliterator Class Diagram)

The following diagram shows the Class Diagram of Java Spliterator interface. It has many fields and methods.

下图显示了Java Spliterator接口的类图。 它具有许多领域和方法。

Java分割器方法 (Java Spliterator Methods)

In this section, we will list out all Java Spliterator methods one by one with some useful description.

在本节中,我们将逐一列出所有Java Spliterator方法,并提供一些有用的描述。

  1. int characteristics(): Returns a set of characteristics of this Spliterator and its elements.

    int Characteristics():返回此Spliterator及其元素的一组特征。
  2. long estimateSize(): Returns an estimate of the number of elements that would be encountered by a forEachRemaining() traversal, or returns Long.MAX_VALUE if infinite, unknown, or too expensive to compute.

    long EstimateSize(long):返回对forEachRemaining()遍历将遇到的元素数的估计,如果无限,未知或计算成本太高,则返回Long.MAX_VALUE。
  3. default void forEachRemaining(Consumer action): Performs the given action for each remaining element, sequentially in the current thread, until all elements have been processed or the action throws an exception.

    默认void forEachRemaining(Consumer action):在当前线程中按顺序对每个剩余元素执行给定操作,直到所有元素都已处理或该操作引发异常。
  4. default Comparator getComparator(): If this Spliterator’s source is SORTED by a Comparator, returns that Comparator.

    默认的Comparator getComparator():如果此Spliterator的源由Comparator排序,则返回该Comparator。
  5. default long getExactSizeIfKnown(): Convenience method that returns estimateSize() if this Spliterator is SIZED, else -1.

    默认的long getExactSizeIfKnown():如果此Splitizer为SIZED,则返回的方法为EstimateSize()的便捷方法,否则为-1。
  6. default boolean hasCharacteristics(int characteristics): Returns true if this Spliterator’s characteristics() contain all of the given characteristics.

    缺省值boolean hasCharacteristics(int features):如果此Spliterator的features()包含所有给定的特性,则返回true。
  7. boolean tryAdvance(Consumer action): If a remaining element exists, performs the given action on it, returning true; else returns false.

    boolean tryAdvance(Consumer action):如果存在剩余元素,则对其执行给定的操作,返回true;否则,返回true。 否则返回false。
  8. Spliterator trySplit(): If this spliterator can be partitioned, returns a Spliterator covering elements, that will, upon return from this method, not be covered by this Spliterator.

    Spliterator trySplit():如果可以对该拆分器进行分区,则返回一个包含元素的Spliterator,从此方法返回后,该元素将不被此Spliterator覆盖。

Java分离器示例 (Java Spliterator Example)

In this section, we will discuss about how to create Java Spliterator object using spliterator() and will develop simple example.

在本节中,我们将讨论如何使用spliterator()创建Java Spliterator对象,并开发简单的示例。

import java.util.Spliterator;
import java.util.ArrayList;
import java.util.List;

public class SpliteratorSequentialIteration
{
  public static void main(String[] args) 
  {
	List<String> names = new ArrayList<>();
	names.add("Rams");
	names.add("Posa");
	names.add("Chinni");
		
	// Getting Spliterator
	Spliterator<String> namesSpliterator = names.spliterator();
		
	// Traversing elements
	namesSpliterator.forEachRemaining(System.out::println);			
   }
}

Output:-

输出:-

Rams
Posa
Chinni

If we observe the above program and output, we can easily understand that this Spliterator.forEachRemaining() method works in the same way as ArrayList.foreach(). Yes, both works in similar way.

如果观察上述程序和输出,我们可以很容易地理解,这个Spliterator.forEachRemaining()方法的工作方式与ArrayList.foreach ()相同。 是的,两者的工作方式相似。

分流器的优点 (Advantages of Spliterator)

  1. Unlike Iterator and ListIterator, it supports Parallel Programming functionality.

    与Iterator和ListIterator不同,它支持并行编程功能。
  2. Unlike Iterator and ListIterator, it supports both Sequential and Parallel Processing of data.

    与Iterator和ListIterator不同,它支持数据的顺序和并行处理。
  3. Compare to other Iterators, it provides better performance.

    与其他Iterators相比,它提供了更好的性能。

迭代器与拆分器 (Iterator vs Spliterator)

IteratorSpliterator
Introduced in Java 1.2.Introduced in Java 1.8.
It is an Iterator for whole Collection API.It is an Iterator for both Collection and Stream API, except Map implemented classes.
It is an Universal Iterator.It is NOT an Universal Iterator.
It does NOT support Parallel Programming.It supports Parallel Programming.
迭代器 分流器
在Java 1.2中引入。 在Java 1.8中引入。
它是整个Collection API的迭代器。 它是Collection和Stream API的迭代器,Map实现的类除外。
它是一个通用迭代器。 它不是通用迭代器。
它不支持并行编程。 它支持并行编程。

That’s all about Spliterator in Java.

这就是Java中的Spliterator。

Reference: API Doc

参考: API文档

翻译自: https://www.journaldev.com/13521/java-spliterator

java 文件分割器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值