ให้เราคุยความแตกต่างเพิ่มเติมระหว่าง Iterator และ ListIterator ด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | iterator | ListIterator |
---|---|---|
ขั้นพื้นฐาน | Iterator สามารถสำรวจองค์ประกอบในชุดสะสมในทิศทางไปข้างหน้าเท่านั้น | ListIterator สามารถสำรวจองค์ประกอบในคอลเลกชันไปข้างหน้าเช่นเดียวกับทิศทางย้อนหลัง |
เพิ่ม | Iterator ไม่สามารถเพิ่มองค์ประกอบให้กับคอลเลกชัน | ListIteror สามารถเพิ่มองค์ประกอบให้กับคอลเลกชัน |
แก้ไข | Iterator ไม่สามารถแก้ไของค์ประกอบในคอลเลกชัน | ListIterator สามารถปรับเปลี่ยนองค์ประกอบในคอลเลกชันโดยใช้ set () |
ทราเวิร์ | Iterator สามารถท่องแผนที่รายการและตั้งค่า | ListIterator สามารถสำรวจรายการวัตถุเท่านั้น |
ดัชนี | Iterator ไม่มีวิธีรับดัชนีขององค์ประกอบในคอลเลกชัน | ใช้ ListIterator คุณสามารถรับดัชนีขององค์ประกอบในคอลเลกชัน |
ความหมายของ Iterator
Iterator เป็นส่วนต่อประสานใน Collection Framework มันถูกใช้เพื่อสำรวจผ่านองค์ประกอบการเก็บรวบรวม Iterator อนุญาตให้คุณวนซ้ำแต่ละองค์ประกอบในคอลเลกชันหนึ่งต่อหนึ่ง รับ องค์ประกอบจากคอลเลกชันหรือ ลบ องค์ประกอบจากคอลเลกชัน คุณสามารถสังเกตเห็นว่าคุณไม่สามารถแก้ไของค์ประกอบใด ๆ ในคอลเลกชันโดยใช้ Iterator
Iterator มีเมธอด iterator () ที่ส่งคืนตัววนซ้ำไปยังจุดเริ่มต้นของการรวบรวม เมื่อคุณได้รับตัววนซ้ำไปยังจุดเริ่มต้นของคอลเลกชันแล้วเพื่อสำรวจองค์ประกอบในคอลเลกชันจะสร้างลูปที่เรียกว่า hasNext () ทุกครั้งที่วนซ้ำ hasNext () ถ้าคืนค่า จริง มันหมายความว่าองค์ประกอบถัดไปมีอยู่ในคอลเลกชันและถ้ามันกลับ เท็จ ก็หมายความว่าองค์ประกอบทั้งหมดจะถูกสำรวจ จากนั้นภายในลูปคุณสามารถรับแต่ละองค์ประกอบในคอลเล็กชันโดยใช้ ถัดไป () ถัดไป () วิธีการส่งกลับองค์ประกอบถัดไปของคอลเลกชัน
ข้อเสียเปรียบ:
การใช้ Iterator คุณสามารถเข้าไปสะสมในทิศทางไปข้างหน้าได้เท่านั้น
ใช้ Iterator คุณไม่สามารถจัดการหรือปรับเปลี่ยนองค์ประกอบในคอลเลกชัน
คำจำกัดความของ ListIterator
ListIterator เป็นอินเทอร์เฟซใน กรอบงานคอลเลกชัน และมันจะขยายส่วนต่อประสาน Iterator การใช้ ListIterator คุณสามารถสำรวจองค์ประกอบของคอลเลกชันได้ทั้งในทิศทาง ไปข้างหน้า และ ข้างหลัง นอกจากนี้คุณยังสามารถ เพิ่ม ลบ หรือ ปรับเปลี่ยน องค์ประกอบใด ๆ ในคอลเลกชัน ในระยะสั้นเราสามารถพูดได้ว่ามันลบข้อเสียของ Iterator
วิธีการของ ListIterator มีดังนี้:
hasNext () : หากผลตอบแทนจริงยืนยันว่ามีองค์ประกอบมากขึ้นในคอลเลกชัน
next () : ส่งคืนองค์ประกอบถัดไปของรายการ
nextIndex () : ส่งคืนดัชนีขององค์ประกอบถัดไปในรายการ
hasPrevious () : ผลตอบแทนจริงถ้ามีองค์ประกอบในทิศทางย้อนกลับในคอลเลกชัน
ก่อนหน้า () : ส่งคืนองค์ประกอบก่อนหน้าในคอลเลกชัน
previousIndex () : ส่งคืนดัชนีขององค์ประกอบก่อนหน้าในคอลเลกชัน
ลบ () : ลบองค์ประกอบออกจากคอลเลกชัน
set () : แก้ไของค์ประกอบในคอลเลกชัน
เพิ่ม () : เพิ่มองค์ประกอบใหม่ในคอลเลกชัน
ความแตกต่างที่สำคัญระหว่าง Iterator และ ListIterator
- ความแตกต่างพื้นฐานระหว่าง Iterator และ ListIterator คือทั้งสองเป็นเคอร์เซอร์ Iterator สามารถสำรวจองค์ประกอบในคอลเลกชันในทิศทางไปข้างหน้าเท่านั้น ในทางกลับกัน ListIterator สามารถเข้าไปในทิศทางไปข้างหน้าและข้างหลัง
- การใช้ตัววนซ้ำคุณไม่สามารถเพิ่มองค์ประกอบใด ๆ ลงในคอลเลกชันได้ แต่โดยใช้ ListIterator คุณสามารถเพิ่มองค์ประกอบลงในคอลเลกชัน
- ใช้ Iterator คุณไม่สามารถลบองค์ประกอบในคอลเลกชันที่ในขณะที่คุณสามารถลบองค์ประกอบจากคอลเลกชันโดยใช้ ListIterator
- การใช้ Iterator คุณสามารถเข้าไปในคอลเล็กชันทั้งหมดเช่น Map, List, Set แต่โดย ListIteror คุณสามารถสำรวจรายการที่นำมาใช้กับวัตถุเท่านั้น
- คุณสามารถดึงดัชนีขององค์ประกอบโดยใช้ Iterator แต่เนื่องจาก List เป็นแบบต่อเนื่องและอิงดัชนีคุณสามารถดึงดัชนีขององค์ประกอบในการใช้ ListIterator
สรุป:
คุณสามารถใช้ ListIterator เมื่อคุณต้องสำรวจรายการวัตถุโดยเฉพาะอย่างยิ่งในทิศทางไปข้างหน้าและย้อนกลับ มิฉะนั้นคุณสามารถใช้ Iterator เนื่องจากรองรับวัตถุประเภทการเก็บรวบรวมทั้งหมด