ArrayList的spliterator()方法返回的元素分隔符与ArrayList相同,但创建的分隔符为late-binding和fail-fast。 late-binding拆分器绑定到元素源。这意味着Arraylist在第一次遍历,第一次拆分或第一次查询估计大小时,而不是在创建Spliterator时。它可以与Java 8中的Streams一起使用。此外,它还可以单独和批量遍历元素。分隔符是遍历元素的更好方法,因为它提供了对元素的更多控制。
Spliterator = Splitting + Iterator
- 它使用tryAdvance()方法在多个线程中分别迭代元素以支持并行处理,
- forEachRemaining()在单个线程中顺序迭代元素的方法,
- trySplit()将自身分为Sub-Spliterators的方法以支持并行处理。
分离器支持数据的顺序和并行处理。
如果您观察以下程序输出的输出,则会发现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)
{
// 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;
}
}
输出:
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/util/ArrayList.html#spliterator()
相关用法
- Java PriorityQueue spliterator()用法及代码示例
- Java ConcurrentSkipListSet spliterator()用法及代码示例
- Java CopyOnWriteArraySet spliterator()用法及代码示例
- Java HashSet spliterator()用法及代码示例
- Java LinkedList spliterator()用法及代码示例
- Java LinkedTransferQueue spliterator()用法及代码示例
- Java ArrayDeque spliterator()用法及代码示例
- Java CopyOnWriteArrayList spliterator()用法及代码示例
- Java ArrayBlockingQueue spliterator()用法及代码示例
- Java ConcurrentLinkedQueue spliterator()用法及代码示例
- Java PriorityBlockingQueue spliterator()用法及代码示例
- Java LinkedBlockingDeque spliterator()用法及代码示例
- Java ConcurrentLinkedDeque Spliterator()用法及代码示例
- Java 8 LinkedBlockingQueue spliterator()用法及代码示例
- Java Java.util.ArrayList.addall()用法及代码示例
注:本文由纯净天空筛选整理自AmanSingh2210大神的英文原创作品 ArrayList spliterator() method in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。