📌  相关文章
📜  Java中的 ArrayList spliterator() 方法

📅  最后修改于: 2022-05-13 01:55:18.522000             🧑  作者: Mango

Java中的 ArrayList spliterator() 方法

ArrayList 的spliterator()方法返回与ArrayList相同元素的 Spliterator,但创建的 Spliterator 是后期绑定和快速失败的。后期绑定 Spliterator 绑定到元素的源。这意味着 Arraylist 在第一次遍历、第一次拆分或第一次查询估计大小时,而不是在创建 Spliterator 时。它可以与Java 8 中的 Streams 一起使用。此外,它也可以单独和批量遍历元素。 Spliterator 是一种更好的遍历元素的方法,因为它提供了对元素的更多控制。

Spliterator = Splitting + Iterator
  • 它使用tryAdvance()方法在多个线程中单独迭代元素以支持并行处理,
  • forEachRemaining()方法在单个线程中按顺序迭代元素,
  • trySplit()方法将自身划分为子分割器以支持并行处理。

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

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

句法:

public Spliterator spliterator()

返回:此方法返回 ArrayList 中元素的Spliterator

下面的程序说明了 ArrayList 的 spliterator() 方法:

示例 1:演示包含电子邮件列表的 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
        // emails for a group of people
        ArrayList list = new ArrayList();
  
        // 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 emails = list.spliterator();
  
        // print result from Spliterator
        System.out.println("list of Emails:");
  
        // forEachRemaining method of Spliterator
        emails.forEachRemaining((n) -> System.out.println(n));
    }
}
输出:
list of Emails:
abc@geeksforgeeks.org
user@geeksforgeeks.org
pqr@geeksforgeeks.org
random@geeksforgeeks.org
randomuser@geeksforgeeks.org

示例 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 list = new ArrayList();
  
        // 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 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;
    }
}
输出:
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

参考:
https://docs.oracle.com/javase/10/docs/api/java Java()