แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | รายการ | ArrayList |
---|---|---|
ขั้นพื้นฐาน | รายการคือส่วนต่อประสาน | ArrayList เป็น Class Collection มาตรฐาน |
วากยสัมพันธ์ | รายการอินเตอร์เฟซ | คลาส ArrayList |
ขยาย / Implement | รายการส่วนต่อขยาย Collection Framework | ArrayList ขยาย AbstractList และใช้ List List Interface |
namespace | System.Collections.Generic | System.Collections |
งาน | มันถูกใช้เพื่อสร้างรายการขององค์ประกอบ (วัตถุ) ซึ่งเกี่ยวข้องกับหมายเลขดัชนีของพวกเขา | ArrayList ใช้เพื่อสร้างอาร์เรย์แบบไดนามิกที่มีวัตถุ |
ความหมายของรายการ
รายการเป็น ส่วนต่อประสาน ที่ขยายกรอบงาน คอลเลกชัน รายการอินเตอร์เฟสอธิบายการรวบรวมองค์ประกอบที่จัดเรียงตามลำดับ รายการส่วนต่อประสานถูกนำไปใช้โดยคลาสการรวบรวมมาตรฐานต่อไปนี้เช่น ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack ส่วนต่อประสานรายการมีองค์ประกอบที่เกี่ยวข้องกับหมายเลขดัชนี คุณสามารถเข้าถึงองค์ประกอบในรายการตามตำแหน่ง (ดัชนี) ในรายการ รายการที่สร้างขึ้นโดยใช้รายการอินเตอร์เฟสเริ่มต้นด้วยดัชนีที่อิงกับศูนย์
นอกเหนือจากวิธีการที่สืบทอดโดยกรอบงานการรวบรวมรายการอินเตอร์เฟสยังกำหนดวิธีการบางอย่างของตัวเอง เมธอดที่เพิ่มโดยอินเตอร์เฟส List คือ add (int, E) และ addAll (int, Collection) วิธีการเหล่านี้เพิ่มองค์ประกอบไปยังรายการโดยดัชนีของพวกเขา วิธีการภายในรายการอาจทำให้เกิดข้อยกเว้นเช่น UnsupportedOperationException หากวิธีการนั้นไม่สามารถแก้ไขรายการได้ เมื่อวัตถุหนึ่งในรายการไม่เข้ากันกับวัตถุอื่นในรายการแล้ว ClassCastException จะถูกโยนองค์ประกอบที่ไม่ได้รับอนุญาตในรายการถ้าคุณพยายามที่จะแทรกวัตถุ Null ในรายการ NullPointerException จะถูกโยนทิ้ง
คุณสามารถรับองค์ประกอบจากรายการโดยใช้วิธี get () คุณสามารถกำหนดค่าขององค์ประกอบในรายการโดยใช้วิธี set () คุณสามารถรับรายการย่อยจากรายการโดยใช้วิธีการ ย่อย () สะดวกในการใช้งานในรายการย่อยแทนที่จะเป็นรายการ
ความหมายของ ArrayList
หนึ่งในคลาสคอลเล็กชันมาตรฐานคือ ArrayList ซึ่งขยายคลาส AbstractList และใช้อินเตอร์เฟส List ชั้น ArrayList ใช้ในการสร้างอาร์เรย์แบบไดนามิกที่เติบโตและหดตัวเมื่อใดก็ตามที่ต้องการ รายการที่สร้างขึ้นโดยใช้คลาส ArrayList ไม่ได้เป็นอะไรนอกจากอาร์เรย์ของวัตถุ ใน Java อาร์เรย์มาตรฐานมีความยาวคงที่ดังนั้นคุณต้องทราบขนาดของอาร์เรย์ล่วงหน้า แต่อาจเป็นกรณีที่คุณอาจไม่ทราบว่าคุณต้องการอาเรย์จนถึงระยะเวลาในการรันเท่าใด ดังนั้นเฟรมเวิร์กของชุดนำเสนอคลาส ArrayList เพื่อแก้ไขปัญหานี้
ArrayList มีตัวสร้างที่สร้างอาร์เรย์ที่มีความสามารถเริ่มต้น แม้ว่าความจุของวัตถุของคลาส ArrayList จะเพิ่มขึ้นโดยอัตโนมัติเมื่อมีการเพิ่มองค์ประกอบลงในอาร์เรย์ แต่คุณยังสามารถเพิ่มความสามารถของวัตถุของ ArrayList ได้ด้วยตนเองโดยใช้เมธอด sureCapacity () เป็นการดีกว่าที่จะเพิ่มความสามารถของอาเรย์ในตอนแรกแทนที่จะทำการจัดสรรหน่วยความจำใหม่ในภายหลัง เนื่องจากการจัดสรรใหม่มีค่าใช้จ่ายสูงกว่าการจัดสรรหน่วยความจำทันที
ความแตกต่างที่สำคัญระหว่างรายการและ ArrayList
- หนึ่งในความแตกต่างที่สำคัญที่สุดระหว่าง List และ ArrayList คือ list คือ อินเตอร์เฟส และ ArrayList เป็น คลาส Collection มาตรฐาน
- ส่วนต่อประสานรายการจะขยายขอบเขตการ รวบรวม ในขณะที่ ArrayList จะขยาย AbstractList Class และใช้ส่วนต่อประสาน รายการ
- เนมสเปซสำหรับรายการอินเตอร์เฟสคือ System.Collection.Generic ในขณะที่เนมสเปซสำหรับ ArrayList คือ System.Collection
- รายการอินเตอร์เฟสสร้างชุดขององค์ประกอบที่จัดเก็บในลำดับและถูกระบุหรือเข้าถึงโดยหมายเลขดัชนี ในทางตรงกันข้าม ArrayList สร้างอาร์เรย์ของวัตถุที่อาร์เรย์สามารถเติบโตแบบไดนามิกเมื่อจำเป็น
สรุป:
ArrayList จะเอาชนะปัญหาของอาร์เรย์แบบสแตติกใน Java มาตรฐานเช่นอาร์เรย์จะไม่สามารถขยายขนาดได้เมื่อสร้างขึ้นแล้ว เมื่ออาร์เรย์ถูกสร้างขึ้นโดยใช้ ArrayList จะมีการสร้างอาร์เรย์แบบไดนามิกที่สามารถขยายและย่อขนาดได้ตามต้องการ คลาส Collection มาตรฐาน ArrayList ขยายรายการอินเตอร์เฟส