Java中的ArrayList spliterator()方法
ArrayList 的 spliterator() 方法返回一个相同元素的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
极客教程