Iterator และ split iterator ทั้งสองอินเทอร์เฟซใช้สำหรับวนซ้ำในคอลเล็กชัน
Split iterator ถูกนำมาใช้ใน Java 8 เพื่อให้เกิดการขนานกัน มันสามารถแยกชุดขององค์ประกอบที่กำหนด และสามารถดำเนินการคู่ขนานกันโดยใช้เธรดอิสระที่แตกต่างกัน มันสามารถเคลื่อนที่ผ่านองค์ประกอบแบบคู่ขนานและตามลำดับได้ มีวิธีการที่สำคัญดังต่อไปนี้ในอินเทอร์เฟซ splitIterator -
- trySplit - ใช้สำหรับแบ่งชุดองค์ประกอบที่กำหนดออกเป็นหลายส่วน
- tryAdvance - เทียบเท่ากับเมธอด hasNext/ next ที่มีอยู่ในอินเทอร์เฟซ Iterator
- getExactSizeIfKnown <> -ใช้สำหรับรับขนาดของชุดองค์ประกอบที่กำหนด
| ซีเนียร์ เลขที่ | คีย์ | Iterator | ตัววนซ้ำแยก |
|---|---|---|---|
| 1 | พื้นฐาน | สามารถใช้สำรวจองค์ประกอบของคอลเลกชันได้ | ใช้กับ Stream ได้ด้วย |
| 2 | การทำงานจำนวนมาก | สามารถใช้เพื่อสำรวจองค์ประกอบทีละตัวเท่านั้น | สามารถใช้เพื่อสำรวจองค์ประกอบจำนวนมาก |
| 3 | ลำดับ /Parallel | สามารถเคลื่อนที่ผ่านองค์ประกอบตามลำดับเท่านั้น | สามารถเคลื่อนที่ผ่านองค์ประกอบในลักษณะต่อเนื่องและแบบขนานได้ |
| 4. | External /Internal Iterator | Iterator ใช้การวนซ้ำภายนอกเพื่อทำซ้ำคอลเล็กชัน | ตัวแยกสัญญาณใช้การวนซ้ำภายใน |
ตัวอย่างเครื่องแยก
public class Main {
public static void main(String args[]) {
List<Integer> listOfInteger = new ArrayList<>();
listOfInteger.add(78);
listOfInteger.add(10);
listOfInteger.add(20);
listOfInteger.add(30);
Spliterator<Integer> s = listOfInteger.spliterator();
Spliterator<Integer> s1 = s.trySplit();
s.forEachRemaining(System.out::println);
System.out.println("Traverse Second Half ");
s1.forEachRemaining(System.out::println);
}
}