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); } }