Java ArrayList spliterator()方法

Java ArrayList spliterator()方法

ArrayListspliterator() 方法返回一个与ArrayList相同元素的Spliterator,但创建的Spliterator是晚期绑定的,并且是快速失效的。一个晚期绑定的Spliterator会绑定到元素的来源。它意味着Arraylist在第一次遍历、第一次分割或第一次查询估计大小的时候,而不是在Spliterator创建的时候。它可以在Java 8中与Streams一起使用。另外,它也可以单独或批量地遍历元素。Spliterator是一种更好的遍历元素的方式,因为它提供了对元素的更多控制。

Spliterator = Splitting + Iterator
Java
  • 它使用tryAdvance()方法,在多个线程中单独迭代元素,以支持并行处理。
  • forEachRemaining()方法在一个单一的线程中依次迭代元素。
  • trySplit()方法将自己分成子分裂器以支持并行处理。

Spliterator同时支持数据的顺序和并行处理。

如果你观察下面程序的输出,你会发现Spliterator.forEachRemaining()方法的工作方式与ArrayList.foreach()相同,但它提供了更好的性能。

语法

public Spliterator<E> spliterator()
Java

返回: 该方法在ArrayList的元素上返回一个Spliterator。

下面的程序说明了ArrayList的splitator()方法。

例1: 在ArrayList上演示spliterator()方法,ArrayList包含一个电子邮件的列表。

// Java Program Demonstrate spliterator()
// method of ArrayList
  
import java.util.*;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // create an ArrayList which contains
        // emails for a group of people
        ArrayList<String> list = new ArrayList<String>();
  
        // Add emails to list
        list.add("abc@geeksforgeeks.org");
        list.add("user@geeksforgeeks.org");
        list.add("pqr@geeksforgeeks.org");
        list.add("random@geeksforgeeks.org");
        list.add("randomuser@geeksforgeeks.org");
  
        // create Spliterator of ArrayList
        // using spliterator() method
        Spliterator<String> emails = list.spliterator();
  
        // print result from Spliterator
        System.out.println("list of Emails:");
  
        // forEachRemaining method of Spliterator
        emails.forEachRemaining((n) -> System.out.println(n));
    }
}
Java

输出。

list of Emails:
abc@geeksforgeeks.org
user@geeksforgeeks.org
pqr@geeksforgeeks.org
random@geeksforgeeks.org
randomuser@geeksforgeeks.org
Java

例2: 在包含用户列表的ArrayList上演示spliterator()方法。

// Java Program Demonstrate spliterator()
// method of ArrayList
  
import java.util.*;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // create an ArrayList which contains
        // user details from user class
        ArrayList<user> list = new ArrayList<user>();
  
        // Add emails to list
        list.add(new user("Aman", 24));
        list.add(new user("Suraj", 23));
        list.add(new user("Amar", 24));
        list.add(new user("Kajal", 22));
  
        // create Spliterator of ArrayList
        // using spliterator() method
        Spliterator<user> users = list.spliterator();
  
        // print result from Spliterator
        System.out.println("list of Emails:");
  
        // forEachRemaining method of Spliterator
        users.forEachRemaining((n) -> print(n));
    }
  
    public static void print(user u)
    {
        System.out.println("User name : " + u.name
                           + " and user age: " + u.age);
    }
}
  
// create a user class
class user {
  
    String name;
    int age;
  
    user(String name, int age)
    {
        this.name = name;
        this.age = age;
    }
}
Java

输出。

list of Emails:
User name : Aman and user age: 24
User name : Suraj and user age: 23
User name : Amar and user age: 24
User name : Kajal and user age: 22
Java

参考资料:

https://docs.oracle.com/javase/10/docs/api/java/util/ArrayList.html#spliterator()

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册