ความแตกต่างระหว่าง List และ ArrayList ใน Java
เนื้อหา
รายการและ ArrayList เป็นสมาชิกของกรอบงานการเก็บรวบรวม รายการคือชุดขององค์ประกอบในลำดับที่แต่ละองค์ประกอบเป็นวัตถุและองค์ประกอบเข้าถึงได้โดยมีตำแหน่ง (ดัชนี) ArrayList สร้างอาร์เรย์แบบไดนามิกของวัตถุที่เพิ่มหรือลดขนาดเมื่อต้องการ ความแตกต่างหลักระหว่าง List และ ArrayList ก็คือ รายการ เป็นส่วนต่อประสานและ ArrayList เป็นคลาส ให้เราศึกษาความแตกต่างระหว่างรายการและ ArrayList ด้วยความช่วยเหลือของกราฟเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | รายการ | ArrayList |
---|---|---|
ขั้นพื้นฐาน | รายการคือส่วนต่อประสาน | ArrayList เป็นคอลเล็กชันคลาสมาตรฐาน |
วากยสัมพันธ์ | รายการอินเตอร์เฟซ | คลาส ArrayList |
ขยาย / Implement | รายการส่วนต่อขยาย Collection Framework | ArrayList ขยาย AbstractList และใช้ Interface List |
namespace | System.Collections.Generic | System.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 (). เป็นการดีกว่าที่จะเพิ่มความสามารถของอาเรย์ในตอนแรกแทนที่จะทำการจัดสรรหน่วยความจำใหม่ในภายหลัง เนื่องจากการจัดสรรใหม่มีค่าใช้จ่ายสูงกว่าการจัดสรรหน่วยความจำทันที
- หนึ่งในความแตกต่างที่สำคัญที่สุดระหว่างรายการและ ArrayList คือรายการนั้น อินเตอร์เฟซ และ ArrayList เป็นชุดสะสมมาตรฐาน ชั้น.
- รายการส่วนต่อขยาย ชุด กรอบในขณะที่ ArrayList ขยาย AbstractList ระดับและดำเนินการ รายการ อินเตอร์เฟซ
- เนมสเปซสำหรับรายการอินเตอร์เฟสคือ System.Collection.Generic ในขณะที่ namespace สำหรับ ArrayList คือ System.Collection.
- ส่วนต่อประสานรายการสร้างชุดขององค์ประกอบที่เก็บไว้ในลำดับและถูกระบุหรือเข้าถึงโดยหมายเลขดัชนี ในทางตรงกันข้าม ArrayList สร้างอาร์เรย์ของวัตถุที่อาร์เรย์สามารถเติบโตแบบไดนามิกเมื่อจำเป็น
สรุป:
กระบวนการ ArrayList จะเอาชนะปัญหาของอาร์เรย์แบบสแตติกใน Java มาตรฐานเช่นอาร์เรย์จะไม่สามารถขยายขนาดเมื่อสร้างขึ้นแล้ว เมื่ออาร์เรย์ถูกสร้างขึ้นโดยใช้ ArrayList จะมีการสร้างอาร์เรย์แบบไดนามิกที่สามารถขยายและย่อขนาดได้ตามต้องการ คลาส Collection มาตรฐาน ArrayList ขยายรายการอินเตอร์เฟส