Java中的ArrayList spliterator()方法

Java中的ArrayList spliterator()方法

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

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

Spliterator支持数据的顺序和并行处理。如果观察下面程序的输出,您将发现Spliterator.forEachRemaining()方法的工作方式与ArrayList.foreach()相同,但它提供更好的性能。

语法:

public Spliterator<E> 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<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));
    }
}

输出:

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)
    {
 
        // 创建包含用户类中用户详细信息的ArrayList
        ArrayList<user> list = new ArrayList<user>();
 
        // 将用户添加到列表中
        list.add(new user("Aman", 24));
        list.add(new user("Suraj", 23));
        list.add(new user("Amar", 24));
        list.add(new user("Kajal", 22));
 
        // 使用spliterator()方法创建ArrayList的Spliterator
        Spliterator<user> users = list.spliterator();
 
        // 从Spliterator打印结果
        System.out.println("用户列表:");
 
        // Spliterator的forEachRemaining方法
        users.forEachRemaining((n) -> print(n));
    }
 
    public static void print(user u)
    {
        System.out.println("用户名:" + u.name
                           + ",用户年龄:" + u.age);
    }
}
 
// 创建用户类
class user {
 
    String name;
    int age;
 
    user(String name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

输出:

用户列表:
用户名:Aman,用户年龄:24
用户名:Suraj,用户年龄:23
用户名:Amar,用户年龄:24
用户名:Kajal,用户年龄:22

示例3:

import java.io.*;
import java.util.ArrayList;
import java.util.Spliterator;
 
public class GFG {
 
    // 主方法
    public static void main(String[] args)
    {
        ArrayList<String> names = new ArrayList<>();
 
        // 将元素添加到列表中
        names.add("Kumar");
        names.add("Bob");
        names.add("Raj");
        names.add("David");
        names.add("Eve");
 
        Spliterator<String> spliterator
            = names.spliterator();
 
        spliterator.forEachRemaining(System.out::println);
    }
}

输出:

Kumar
Bob
Raj
David
Eve

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程