ความแตกต่างระหว่าง List และ ArrayList ใน Java

ผู้เขียน: Laura McKinney
วันที่สร้าง: 2 เมษายน 2021
วันที่อัปเดต: 15 พฤษภาคม 2024
Anonim
LinkedList vs ArrayList in Java | Differences between ArrayList and LinkedList | Edureka
วิดีโอ: LinkedList vs ArrayList in Java | Differences between ArrayList and LinkedList | Edureka

เนื้อหา


รายการและ ArrayList เป็นสมาชิกของกรอบงานการเก็บรวบรวม รายการคือชุดขององค์ประกอบในลำดับที่แต่ละองค์ประกอบเป็นวัตถุและองค์ประกอบเข้าถึงได้โดยมีตำแหน่ง (ดัชนี) ArrayList สร้างอาร์เรย์แบบไดนามิกของวัตถุที่เพิ่มหรือลดขนาดเมื่อต้องการ ความแตกต่างหลักระหว่าง List และ ArrayList ก็คือ รายการ เป็นส่วนต่อประสานและ ArrayList เป็นคลาส ให้เราศึกษาความแตกต่างระหว่างรายการและ ArrayList ด้วยความช่วยเหลือของกราฟเปรียบเทียบที่แสดงด้านล่าง

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบรายการArrayList
ขั้นพื้นฐานรายการคือส่วนต่อประสานArrayList เป็นคอลเล็กชันคลาสมาตรฐาน
วากยสัมพันธ์รายการอินเตอร์เฟซคลาส ArrayList
ขยาย / Implementรายการส่วนต่อขยาย Collection FrameworkArrayList ขยาย AbstractList และใช้ Interface List
namespaceSystem.Collections.GenericSystem.Collections
งานมันถูกใช้เพื่อสร้างรายการขององค์ประกอบ (วัตถุ) ซึ่งเกี่ยวข้องกับหมายเลขดัชนีของพวกเขาArrayList ใช้เพื่อสร้างอาร์เรย์แบบไดนามิกที่มีวัตถุ


ความหมายของรายการ

รายการคือ อินเตอร์เฟซ ซึ่งขยายความ ชุด กรอบ. รายการอินเตอร์เฟสอธิบายการรวบรวมองค์ประกอบที่จัดเรียงตามลำดับ ส่วนต่อประสานรายการนั้นดำเนินการโดยคลาสการรวบรวมมาตรฐานต่อไปนี้ ArrayList, LinkedList, CopyOnWriteArrayList, Vector, สแต็ก. ส่วนต่อประสานรายการมีองค์ประกอบที่เกี่ยวข้องกับหมายเลขดัชนี คุณสามารถเข้าถึงองค์ประกอบในรายการตามตำแหน่ง (ดัชนี) ในรายการ รายการที่สร้างขึ้นโดยใช้ List Interface เริ่มต้นด้วยดัชนีที่อิงกับศูนย์

นอกเหนือจากวิธีการที่สืบทอดโดยกรอบงานการรวบรวมรายการอินเตอร์เฟสยังกำหนดวิธีการบางอย่างของตัวเอง วิธีการที่เพิ่มโดยส่วนต่อประสานรายการคือ เพิ่ม (int, E) และ addAll (int, การรวบรวม). วิธีการเหล่านี้เพิ่มองค์ประกอบไปยังรายการโดยดัชนีของพวกเขา วิธีการภายในรายการอาจทำให้เกิดข้อยกเว้นเช่น UnsupportedOperationException หากวิธีการนั้นไม่สามารถแก้ไขรายการได้ เมื่อวัตถุหนึ่งในรายการไม่เข้ากันกับวัตถุอื่นในรายการนั้น ClassCastException ถูกโยนองค์ประกอบที่ไม่ได้รับอนุญาตในรายการถ้าคุณพยายามที่จะแทรกวัตถุเป็นโมฆะในรายการ NullPointerException ถูกโยนทิ้ง


คุณสามารถรับองค์ประกอบจากรายการโดยใช้ ได้รับ () วิธี. คุณสามารถกำหนดค่าขององค์ประกอบในรายการโดยใช้ ชุด () วิธี. นอกจากนี้คุณยังสามารถรับรายการย่อยจากรายการโดยใช้วิธีการ รายการย่อย (). สะดวกในการใช้งานในรายการย่อยแทนที่จะเป็นรายการ

ความหมายของ ArrayList

หนึ่งในคลาสคอลเล็กชันมาตรฐานคือ ArrayList ซึ่งขยายออกไป AbstractList ชั้นเรียนและยังใช้ รายการ อินเตอร์เฟซ. ชั้น ArrayList ใช้ในการสร้างอาร์เรย์แบบไดนามิกที่เติบโตและหดตัวเมื่อใดก็ตามที่จำเป็น รายการที่สร้างขึ้นโดยใช้คลาส ArrayList ไม่ได้เป็นอะไรนอกจากอาร์เรย์ของวัตถุ ใน Java อาร์เรย์มาตรฐานมีความยาวคงที่ดังนั้นคุณต้องทราบขนาดของอาร์เรย์ล่วงหน้า แต่อาจเป็นกรณีที่คุณอาจไม่ทราบว่าความยาวของอาเรย์ที่คุณต้องการจนถึงเวลาทำงาน ดังนั้นเฟรมเวิร์กของชุดนำเสนอคลาส ArrayList เพื่อแก้ไขปัญหานี้

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

  1. หนึ่งในความแตกต่างที่สำคัญที่สุดระหว่างรายการและ ArrayList คือรายการนั้น อินเตอร์เฟซ และ ArrayList เป็นชุดสะสมมาตรฐาน ชั้น.
  2. รายการส่วนต่อขยาย ชุด กรอบในขณะที่ ArrayList ขยาย AbstractList ระดับและดำเนินการ รายการ อินเตอร์เฟซ
  3. เนมสเปซสำหรับรายการอินเตอร์เฟสคือ System.Collection.Generic ในขณะที่ namespace สำหรับ ArrayList คือ System.Collection.
  4. ส่วนต่อประสานรายการสร้างชุดขององค์ประกอบที่เก็บไว้ในลำดับและถูกระบุหรือเข้าถึงโดยหมายเลขดัชนี ในทางตรงกันข้าม ArrayList สร้างอาร์เรย์ของวัตถุที่อาร์เรย์สามารถเติบโตแบบไดนามิกเมื่อจำเป็น

สรุป:

กระบวนการ ArrayList จะเอาชนะปัญหาของอาร์เรย์แบบสแตติกใน Java มาตรฐานเช่นอาร์เรย์จะไม่สามารถขยายขนาดเมื่อสร้างขึ้นแล้ว เมื่ออาร์เรย์ถูกสร้างขึ้นโดยใช้ ArrayList จะมีการสร้างอาร์เรย์แบบไดนามิกที่สามารถขยายและย่อขนาดได้ตามต้องการ คลาส Collection มาตรฐาน ArrayList ขยายรายการอินเตอร์เฟส