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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。