ขอบเขตและความสัมพันธ์ของตัววนซ้ำและผู้ฟัง:
(1) ตัววนซ้ำสามารถใช้ในการใช้งานรายการ arraylist, linkedList, แผนที่ ฯลฯ
(2) listiterator ตามชื่อหมายถึงใช้ซ้ำรายการเพื่อใช้งาน ArrayList และ LinkedList
(3) ดังที่เห็นได้จากซอร์สโค้ดหรือเอกสาร API Iterator เป็นคลาสหลักของ listiterator
Interface Interface Listiterator <e> ขยายตัวเป็นตัววนซ้ำ <e> {// omit ... }มีการเพิ่มวิธีการใหม่ใน listiterator
การวิเคราะห์อินสแตนซ์ตำแหน่งเคอร์เซอร์โดยนัยโดยนัย:
ดังที่แสดงในรูปด้านบนมีสี่องค์ประกอบ A, B, C, D ในรายการคอลเลกชันที่ตัววนซ้ำจะทำซ้ำ เมื่อมีการเรียกเมธอด xxx.iterator () หรือ xxx.listiterator ()
ตัววนซ้ำชี้ไปที่ตำแหน่งของ iterator_one และเมื่อมีการเรียกวิธี XXX.next () วิธีการตำแหน่งตัววนซ้ำจะชี้ไปที่ตำแหน่ง iterator_two
ตำแหน่งที่ตัววนซ้ำชี้ไปที่ไม่ตรงข้ามกับองค์ประกอบโดยตรง แต่ระหว่างองค์ประกอบ
วิธีการใน iterator และ listiterator:
------ วิธีการในตัววนซ้ำ:
สรุปวิธีการ API อย่างเป็นทางการ:
การวิเคราะห์วิธี:
Hasnext (): กำหนดว่ามีองค์ประกอบในตำแหน่งถัดไปที่ชี้ด้วยตัววนซ้ำองค์ประกอบในคอลเลกชันหรือไม่ กลับมาจริงมิฉะนั้นจะส่งคืนเท็จ
Next (): ส่งคืนค่าขององค์ประกอบถัดไปที่ตำแหน่งที่ชี้โดยตัววนซ้ำ
ลบ (): ลบค่าที่ลบโดยตัววนซ้ำผ่านตัววนซ้ำ
------ วิธีการใน listiterator:
สรุปวิธีการ API อย่างเป็นทางการ:
การวิเคราะห์วิธี:
เพิ่ม (EE): แทรกองค์ประกอบที่ระบุในคอลเลกชัน ตำแหน่งการแทรกเกี่ยวข้องกับการดำเนินการครั้งสุดท้ายถัดไป () หรือก่อนหน้า (ก่อนหน้า ()
หากการดำเนินการสุดท้ายคือถัดไป () องค์ประกอบจะถูกแทรกหลังจากองค์ประกอบที่ถูกลบออกไปถัดไปและหากเป็นก่อนหน้า () องค์ประกอบจะถูกแทรกก่อนที่องค์ประกอบจะถูกลบออก
Hasnext (): เมื่อชุดถูกสำรวจตามลำดับในเชิงบวกจะกำหนดว่าองค์ประกอบถัดไปชี้ไปที่เคอร์เซอร์โดยนัยหรือไม่ หากมีอยู่มันจะส่งคืนจริงมิฉะนั้นจะส่งคืนเท็จ
HasPrevious (): เมื่อชุดถูกย้อนกลับไปทางมันจะกำหนดว่าองค์ประกอบก่อนหน้าของเคอร์เซอร์โดยนัยอยู่หรือไม่ หากมีอยู่มันจะส่งคืนจริงมิฉะนั้นจะส่งคืนเท็จ
Next (): ส่งคืนค่าองค์ประกอบถัดไปที่ตำแหน่งที่ชี้ด้วยเคอร์เซอร์โดยนัย
NextIndex (): ส่งคืนค่าดัชนีขององค์ประกอบถัดไปที่ตำแหน่งที่ชี้ด้วยเคอร์เซอร์โดยนัย
ก่อนหน้า (): ส่งคืนค่าองค์ประกอบก่อนหน้าที่ตำแหน่งที่ชี้ด้วยเคอร์เซอร์โดยนัย
Previous INDEX (): ส่งคืนค่าดัชนีขององค์ประกอบตำแหน่งก่อนหน้านี้ชี้ไปที่เคอร์เซอร์โดยนัย
ลบ (): การลบองค์ประกอบจากคอลเลกชันไม่ได้เป็นการลบองค์ประกอบทั้งหมด แต่เพื่อลบองค์ประกอบที่ส่งคืนโดยการดำเนินการครั้งสุดท้ายถัดไป () หรือก่อนหน้า ()
หาก next () หรือก่อนหน้า () ไม่ส่งคืนค่าข้อผิดพลาดจะถูกรายงาน
SET (EE): แทนที่องค์ประกอบที่ส่งคืนโดย next () หรือก่อนหน้า () ด้วย E จากรายการ ตัวอย่างเช่นหาก Next () ถูกนำออกเป็น A คุณสามารถแทนที่ด้วยหนึ่งโดยชุด
ตัวอย่างที่ 1:
แพ็คเกจ com.lanhuigu.java; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า java.util.listiterator; ArrayList <String> (); list.add ("a"); list.add ("b"); list.add ("c"); list.add ("d"); // ในเวลานี้ตัววนซ้ำชี้ไปที่ iterator_one listiterator listiterator.next (); // ลบองค์ประกอบ listiterator.remove (); // ลบองค์ประกอบที่ดึงมาโดยถัดไป ในเวลานี้ A ถูกลบออกจากคอลเลกชัน เพิ่มองค์ประกอบ // listiterator.previous (); listiterator.add ("e"); // ก่อนที่จะชี้ไปที่ตำแหน่ง iterator_two มันเป็นตำแหน่งก่อนหน้า // พิมพ์องค์ประกอบที่ดึงมาโดยถัดไป System.out.println ("FirstElement:" + FirstElement); // reinitialize ตำแหน่งการชี้ไปยังตำแหน่ง iterator_one แต่ A ยังไม่ถูกลบและเพิ่ม e listiterator = list.listiterator (); ในขณะที่ (listiterator.hasnext ()) {system.out.println (listiterator.next ());} system.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------- - list.listiterator ();ตัวอย่างที่ 2:
แพ็คเกจ com.lanhuigu.java; นำเข้า java.util.arraylist; นำเข้า java.util.iterator; นำเข้า java.util.list; นำเข้า java.util.listiterator; คลาสสาธารณะ iteratorapitest arraylist <String> (); list.add ("a"); list.add ("b"); list.add ("c"); list.add ("d"); // วิธีแรกในการสำรวจชุดจะสำรวจโดยตรงผ่านคำสั่งลูป {system.out.println (e);} system.out.println ("--------------------"); // วิธีที่สองในการสำรวจชุด (iterator) ตัววนซ้ำ <string> iterator = list.iterator (); ในขณะที่ (iterator.hasnext ()) {system.out.println (iterator.next ());} system.out.println ("-------------------------"); // วิธีที่สาม ในขณะที่ (listiterator.hasnext ()) {system.out.println (listiterator.next ());} system.out.println ("-------------------");}}สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดทั้งหมดของตัวอย่าง Iterator และ Listiterator ใน Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!