CodeGym /หลักสูตรจาวา /โมดูล 1 /การทำงานกับ ArrayList ตอนที่ 2

การทำงานกับ ArrayList ตอนที่ 2

โมดูล 1
ระดับ , บทเรียน
มีอยู่

1. การเพิ่มองค์ประกอบที่ตรงกลาง (หรือที่จุดเริ่มต้น) ของรายการ

ถ้าเราต้องการแทรกองค์ประกอบตรงกลางรายการ นี่คือสิ่งที่เกิดขึ้นภายในรายการ

สมมติว่าเรามีรายการองค์ประกอบ 11 รายการ:

การเพิ่มองค์ประกอบที่ตรงกลาง (หรือที่จุดเริ่มต้น) ของรายการ

เราต้องการแทรกหมายเลข 10,000 ลงในรายการที่ดัชนี 5 ในการทำเช่นนี้ เราเพียงดำเนินการ:

list.add(5, 10000);

ตัวแปรlistอยู่ที่ไหน ArrayListวิธีadd(int index, type value)การเพิ่มค่า 10,000 ที่ตำแหน่ง 5 ในรายการ นี่คือสิ่งที่เกิดขึ้นในadd()วิธีการ:

ขั้นตอนที่ 1: องค์ประกอบทั้งหมดของอาร์เรย์ เริ่มจากตำแหน่งที่ 5 จะถูกเลื่อน (คัดลอก) ไป 1 องค์ประกอบไปทางท้ายอาร์เรย์:

การเพิ่มองค์ประกอบที่ตรงกลาง (หรือที่จุดเริ่มต้น) ของรายการ 1

โปรดทราบว่าตอนนี้องค์ประกอบในเซลล์ที่ 5 และ 6 ของอาร์เรย์จะเหมือนกัน

ขั้นตอนที่ 2: เขียนค่า 10,000 ลงในเซลล์ที่ 5:

การเพิ่มองค์ประกอบที่ตรงกลาง (หรือที่จุดเริ่มต้น) ของรายการ 2

ตอนนี้รายการประกอบด้วยองค์ประกอบทั้งหมดของอาร์เรย์ และเซลล์ที่ห้าประกอบด้วยตัวเลข 10,000 สิ่งที่เราต้องการ



2. การลบองค์ประกอบออกจากรายการ

การลบองค์ประกอบออกจากรายการคล้ายกับการแทรกองค์ประกอบ แต่กระบวนการจะกลับกัน

ลองลบองค์ประกอบที่ 3 ออกจากรายการ ในการทำเช่นนี้เราต้องดำเนินการ:

list.remove(3);

นี่คือสิ่งที่เกิดขึ้นในวิธีการลบ () :

ขั้นตอนที่ 1: องค์ประกอบของอาร์เรย์ที่เริ่มต้นจากตำแหน่งที่ 4 จะถูกเลื่อน (คัดลอก) ไป 1 องค์ประกอบไปทางจุดเริ่มต้นของอาร์เรย์:

การลบองค์ประกอบออกจากรายการ

ขั้นตอนที่ 2: ค่าของsizeตัวแปรจะลดลง 1

การลบองค์ประกอบออกจากรายการ 2

โปรดทราบว่ามีค่าบางค่าเป็นสีเทาที่ส่วนท้ายของอาร์เรย์ ในทางเทคนิคแล้วสิ่งเหล่านี้คือขยะ ต้องนำออกเพื่อไม่ให้รบกวนการเก็บขยะ

ขั้นตอนที่ 3: ทำความสะอาดขยะ

การลบองค์ประกอบออกจากรายการ 3



3. ตัวอย่างการปฏิบัติของการทำงานกับรายการใน Java

ลองเขียนตัวอย่างการทำงานกับรายการ:

เราจะแสดงรายการเลขคู่ทั้งหมดในช่วงตั้งแต่ 1 ถึง 20:

รหัส หมายเหตุ
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);
สร้างรายการวัตถุ

วนรอบดัชนีทั้งหมด1เป็น20
ถ้าดัชนีหารโดย2ไม่เหลือ
เพิ่มลงในรายการ

ตอนนี้ให้แสดงองค์ประกอบทั้งหมดของรายการบนหน้าจอ:

รหัส หมายเหตุ
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
สร้างวัตถุรายการ
วนรอบดัชนีทั้งหมด1เป็น20

ถ้าตัวเลขหารโดย2ไม่เหลือเศษ
เพิ่มในรายการ

วนรอบจากศูนย์จนถึงขนาดของรายการ
แสดงแต่ละองค์ประกอบบนหน้าจอ

การลบองค์ประกอบ:

ทีนี้มาลบองค์ประกอบทั้งหมดที่หารด้วย 4 ลงตัว โปรดทราบว่าหลังจากลบองค์ประกอบออกจากรายการแล้วตำแหน่งขององค์ประกอบที่เหลือจะเปลี่ยนไปทันที

รหัส หมายเหตุ
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
สร้างวัตถุรายการ

วนรอบดัชนีทั้งหมด1เป็น20
ถ้าดัชนีหารได้โดย2ไม่มีเศษเหลือ
ให้เพิ่มลงในรายการ

วนซ้ำจากศูนย์เป็นขนาดของรายการ
ถ้าองค์ประกอบของรายการหารโดย4ไม่เหลือเศษ:

a) ลบ องค์ประกอบ
b) ลดiตัวนับเพื่อให้เราได้ดัชนีเดียวกันในการวนซ้ำครั้งต่อไป

สมมติว่าคุณต้องลบองค์ประกอบ 3 รายการสุดท้ายออกจากรายการ

นี่คือวิธีการที่ไม่ถูกต้อง:

รหัส หมายเหตุ
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
สร้างวัตถุรายการ รายการ

มี 10 องค์ประกอบ: 2, 4, 6, ... 20



n = 10
n - 3 = 7(เหลือ 9 องค์ประกอบในรายการ)
n - 2 = 8(เหลือ 8 องค์ประกอบในรายการ)
n - 1 = 9(เหลือ 7 องค์ประกอบในรายการ)

หลังจากลบองค์ประกอบที่ 7 และ 8 แล้ว จะเหลือเพียง 8 องค์ประกอบในรายการ ซึ่งหมายความว่าจะไม่สามารถลบองค์ประกอบที่ 9 ได้ — ข้อผิดพลาดจะเกิดขึ้นในโปรแกรม

วิธีที่ถูกต้องในการลบองค์ประกอบมีดังนี้

ตัวเลือกที่ 1 ตัวเลือก 2
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

องค์ประกอบจำเป็นต้องถูกลบออกจากส่วนท้ายหรือจากตำแหน่งอื่นที่สอดคล้องกัน เนื่องจากองค์ประกอบจะถูกเลื่อนทีละรายการหลังจากการดำเนินการลบแต่ละครั้ง


ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION