แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

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

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

พื้นฐานสำหรับการเปรียบเทียบรายการArrayList
ขั้นพื้นฐานรายการคือส่วนต่อประสานArrayList เป็น Class Collection มาตรฐาน
วากยสัมพันธ์รายการอินเตอร์เฟซคลาส ArrayList
ขยาย / Implementรายการส่วนต่อขยาย Collection FrameworkArrayList ขยาย AbstractList และใช้ List List Interface
namespaceSystem.Collections.GenericSystem.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

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

สรุป:

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

Top