จะใช้วิธี Iterator เพื่อลบองค์ประกอบออกจากคอลเล็กชันใน Java ได้อย่างไร

Ca Chi Withi Iterator Pheux Lb Xngkh Prakxb Xxk Cak Khxllekchan Ni Java Di Xyangri



วนซ้ำ ” วิธีการนำเสนอวิธีที่ปลอดภัยและง่ายดายในการลบหรือลบองค์ประกอบข้อมูลเฉพาะจากคอลเลกชันในขณะที่วนซ้ำ ช่วยป้องกันการเกิด “ ConcurrentModificationException ” ซึ่งเกิดขึ้นเมื่อ Enhanced for loop พยายามแก้ไขคอลเล็กชัน โดยจะจัดเก็บเส้นทางของตำแหน่งปัจจุบันและเปิดโอกาสให้โปรแกรมเมอร์ก้าวไปข้างหน้าและลบองค์ประกอบพื้นฐานได้ตามต้องการ

บล็อกนี้สาธิตกระบวนการลบองค์ประกอบออกจากคอลเล็กชันโดยใช้วิธีการวนซ้ำ







จะใช้วิธี Iterator เพื่อลบองค์ประกอบออกจากคอลเล็กชันใน Java ได้อย่างไร

วิธีการวนซ้ำเป็นแบบทิศทางเดียวและสามารถใช้กับคอลเลกชันประเภทต่างๆ รวมถึง “ ArrayList”, “ลิงค์ลิสต์ ” ฯลฯ นำเสนอวิธีการที่เหมือนกันในการลบองค์ประกอบออกจากคอลเล็กชันใดๆ ที่ใช้ ' ทำซ้ำได้ ' อินเตอร์เฟซ.



ให้เราไปดูตัวอย่างเพื่อทำความเข้าใจวิธีการวนซ้ำ:



ตัวอย่างที่ 1: การลบองค์ประกอบเฉพาะออกจากคอลเลกชันโดยใช้วิธีการวนซ้ำ

วิธีการวนซ้ำสามารถใช้กับ “ ถ้า ” คำสั่งหรือลูปเพื่อเลือกองค์ประกอบที่ระบุ จากนั้น “ ลบ วิธีการ ()” ใช้ในการดำเนินการลบที่แสดงด้านล่าง:





นำเข้า java.util.* ;
ระดับ IterExam
{
สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง )
{
รายการอาร์เรย์ < จำนวนเต็ม > demoArrList = ใหม่ รายการอาร์เรย์ < จำนวนเต็ม > ( ) ;
สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน <= ยี่สิบ ; ฉัน = ฉัน + 2 )
{
demoArrList. เพิ่ม ( ฉัน ) ;
}
ตัวทำซ้ำ < จำนวนเต็ม > มัน = demoArrList. วนซ้ำ ( ) ;
ระบบ . ออก . พิมพ์ ( 'ArrayList ที่ให้มา:' ) ;

สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < demoArrList. ขนาด ( ) ; ฉัน ++ )
{
ระบบ . ออก . พิมพ์ ( demoArrList. รับ ( ฉัน ) + ' ' ) ;
}
ในขณะที่ ( มัน มีถัดไป ( ) )
{
ถ้า ( มัน ต่อไป ( ) % 3 == 0 )
มัน ลบ ( ) ;
}
ระบบ . ออก . พิมพ์ ( ' \n หลังจากลบองค์ประกอบ ArrayList แปลก ๆ ' ) ;
สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < demoArrList. ขนาด ( ) ; ฉัน ++ )
{
ระบบ . ออก . พิมพ์ ( demoArrList. รับ ( ฉัน ) + ' ' ) ;
}
}
}

คำอธิบายของรหัสด้านบน:

  • ขั้นแรก สร้าง ArrayList จากนั้นจึงสร้าง ' 2 ” ถูกแทรกจนถึงช่วงของ “ ยี่สิบ ” ด้วยความช่วยเหลือของ “ สำหรับ ” วนซ้ำ
  • ถัดไป ประกาศเป็น “ วนซ้ำ ” วัตถุเมธอดเพื่อแสดงองค์ประกอบของ ArrayList บนคอนโซล
  • จากนั้นใช้ “ มีถัดไป ()” วิธีการที่มีตัววนซ้ำวัตถุเพื่อสำรวจผ่านองค์ประกอบ ArrayList ที่มีอยู่ทั้งหมด
  • หลังจากนั้น “ ถ้า คำสั่ง ” ใช้เพื่อตรวจสอบองค์ประกอบที่หารด้วย “ ลงตัว 3 “ข้างในนั้น.
  • จากนั้น “ ลบ เมธอด ()” ใช้เพื่อลบองค์ประกอบที่ส่งคืนโดย “ ถ้า ' คำแถลง.
  • ในตอนท้าย ArrayList ที่อัปเดตแล้วจะแสดงโดยใช้ ' สำหรับ ” วนซ้ำ

หลังจากรวบรวม:



ผลลัพธ์จะแสดงองค์ประกอบเฉพาะซึ่งหารด้วยสามและลบออกจาก ArrayList โดยใช้วิธีวนซ้ำ

ตัวอย่างที่ 2: การลบองค์ประกอบทั้งหมดออกจากคอลเลกชัน

หากต้องการลบองค์ประกอบที่มีอยู่ทั้งหมดของคอลเลกชัน สามารถใช้วิธีการวนซ้ำพร้อมกับ “ ลบ ()” วิธีการที่แสดงด้านล่าง:

นำเข้า java.util.* ;
ระดับ ความว่างเปล่า
{
สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง หาเรื่อง [ ] )
{
เวกเตอร์ < จำนวนเต็ม > ทดสอบเวกเตอร์ = ใหม่ เวกเตอร์ < จำนวนเต็ม > ( ) ;
ทดสอบเวกเตอร์ เพิ่ม ( 18 ) ;
ทดสอบเวกเตอร์ เพิ่ม ( ยี่สิบเอ็ด ) ;
ทดสอบเวกเตอร์ เพิ่ม ( 25 ) ;
ทดสอบเวกเตอร์ เพิ่ม ( 27 ) ;
ทดสอบเวกเตอร์ เพิ่ม ( 30 ) ;

ตัวทำซ้ำ < จำนวนเต็ม > สำรวจ = ทดสอบเวกเตอร์ วนซ้ำ ( ) ;
ระบบ . ออก . พิมพ์ ( 'องค์ประกอบที่มีอยู่:' ) ;
ในขณะที่ ( สำรวจ มีถัดไป ( ) )
ระบบ . ออก . พิมพ์ ( สำรวจ ต่อไป ( ) + ' ' ) ;
ระบบ . ออก . พิมพ์ ( ' \n testVector ประกอบด้วย ' + ทดสอบเวกเตอร์ ขนาด ( ) + 'องค์ประกอบ' ) ;
สำรวจ = ทดสอบเวกเตอร์ วนซ้ำ ( ) ;
ในขณะที่ ( สำรวจ มีถัดไป ( ) )
{
ระบบ . ออก . พิมพ์ ( ' \n ถอด ' + สำรวจ ต่อไป ( ) ) ;
สำรวจ ลบ ( ) ;
}
ระบบ . ออก . พิมพ์ ( ' \n ตอนนี้ testVector มี ' + ทดสอบเวกเตอร์ ขนาด ( ) + 'องค์ประกอบ' ) ;
}
}

คำอธิบายของรหัส:

  • ก่อนอื่น ประกาศและเริ่มต้น “ เวกเตอร์ ” ด้วยค่าประเภทจำนวนเต็มจำลองโดยใช้เครื่องหมาย “ เพิ่ม ()' วิธี.
  • ถัดไป สร้างวิธีการวนซ้ำที่ใช้ ' มีถัดไป ()' และ ' ต่อไป ()” วิธีการ จะแสดงองค์ประกอบข้อมูลที่มีอยู่และขนาดที่สอดคล้องกัน
  • จากนั้นใช้ “ มีถัดไป ()” คุณสมบัติตามวัตถุ iterator ภายใน “ ในขณะที่ ” วนซ้ำ
  • หลังจากนั้นให้ใช้ “ ต่อไป ()” วิธีการเลือกองค์ประกอบที่จะเกิดขึ้นจากนั้น ลบ () วิธีการถูกเรียกเพื่อลบแต่ละองค์ประกอบที่ได้รับ
  • ด้วยวิธีนี้ องค์ประกอบทั้งหมดของ Vector จะถูกลบออก และขนาดของ Vector จะแสดงบนคอนโซล

คำอธิบายของรหัส:

รหัสด้านบนยืนยันว่าองค์ประกอบทั้งหมดจากคอลเลกชันถูกลบออกแล้ว

ตัวอย่างที่ 3: การลบองค์ประกอบโดยใช้ ListIterator

ListIterator ทำงานคล้ายกับวิธีการวนซ้ำ ListIterator ดำเนินการสำรวจทั้งสองด้านในทิศทางไปข้างหน้าและย้อนกลับ หากต้องการลบองค์ประกอบเฉพาะออกจากคอลเล็กชันโดยใช้ ListIterator ใน Java โปรดไปที่โค้ดด้านล่าง:

นำเข้า java.util.ArrayList ;
นำเข้า java.util.ListIterator ;
สาธารณะ ระดับ รายการ IteratorDemo {

// กำลังเริ่มต้นเมธอด main()
สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง )
{ // ประกาศและเริ่มต้น ArrayList
รายการอาร์เรย์ < สตริง > โตขึ้น = ใหม่ รายการอาร์เรย์ < สตริง > ( ) ;
โตขึ้น เพิ่ม ( 'หมวก' ) ;
โตขึ้น เพิ่ม ( 'เสา' ) ;
โตขึ้น เพิ่ม ( 'เฮนลี่ย์' ) ;
โตขึ้น เพิ่ม ( 'เหงื่อ' ) ;
โตขึ้น เพิ่ม ( 'ไม่เป็นทางการ' ) ;
โตขึ้น เพิ่ม ( 'หรูหรา' ) ;
โตขึ้น เพิ่ม ( 'ดรายฟิต' ) ;


ListIterator < สตริง > ลิตร = โตขึ้น listIterator ( ) ;
ระบบ . ออก . พิมพ์ ( 'รายการก่อนถอด' ) ;
สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < โตขึ้น ขนาด ( ) ; ฉัน ++ )
ระบบ . ออก . พิมพ์ ( โตขึ้น รับ ( ฉัน ) + ' ' ) ;
ในขณะที่ ( ลิตร. มีถัดไป ( ) ) {
ถ้า ( ลิตร. ต่อไป ( ) . เท่ากับ ( 'เหงื่อ' ) ) {
ลิตร. ลบ ( ) ;
}
}
ระบบ . ออก . พิมพ์ ( ' \n รายการหลังถอด' ) ;
สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < โตขึ้น ขนาด ( ) ; ฉัน ++ )
ระบบ . ออก . พิมพ์ ( โตขึ้น รับ ( ฉัน ) + ' ' ) ;
}
}

คำอธิบายของรหัสด้านบน:

  • ขั้นแรก ให้ประกาศและเริ่มต้น ArrayList ด้วยค่าประเภทสตริงจำลอง และแสดงองค์ประกอบทั้งหมดบนคอนโซลโดยใช้ ' สำหรับ ” วนซ้ำ
  • ถัดไป สร้างวัตถุที่เรียก ' มีถัดไป ()” วิธีการภายใน “ ในขณะที่ ” วนซ้ำ มันเคลื่อนที่ผ่านองค์ประกอบที่อาศัยอยู่ทั้งหมด
  • จากนั้น “ ถ้า คำสั่ง ” ใช้สำหรับตรวจสอบแต่ละองค์ประกอบด้วยข้อความเฉพาะ เมื่อองค์ประกอบนั้นตรงกับ “ ลบ ()” เรียกว่าเมธอด จะลบองค์ประกอบเฉพาะออกจาก ' ศิลปะ ” ชื่อ ArrayList
  • ในตอนท้าย แสดง ArrayList ที่แก้ไขแล้วบนคอนโซล

หลังจากรวบรวม:

สแน็ปช็อตยืนยันว่าองค์ประกอบข้อมูลที่ระบุถูกลบออกจากคอลเล็กชันโดยใช้ ListIterator

บทสรุป

หากต้องการลบองค์ประกอบออกจากคอลเล็กชัน ให้คลิก “ ลบ ()” วิธีการของ iterator ถูกนำมาใช้ iterator สำรวจผ่าน ArrayList เพื่อค้นหาข้อมูลเป้าหมาย เมื่อพบแล้ว “ ลบ วิธีการ ()” ใช้เพื่อลบองค์ประกอบข้อมูลเฉพาะนั้น มีเทคนิคที่เป็นมาตรฐานสำหรับคอลเล็กชันต่างๆ และป้องกันปัญหาและการเกิดข้อยกเว้นต่างๆ เช่น “ ข้อยกเว้นการปรับเปลี่ยนพร้อมกัน '. นอกจากนั้น “ ListIterator ” ก็มีประโยชน์เช่นกัน