ความแตกต่างระหว่าง ArrayList และ Vector ใน Java
เนื้อหา
ArrayList และ Vector ทั้งคู่เป็นคลาสภายใต้ลำดับชั้นของกรอบงานการเก็บรวบรวม ArrayList และ Vector ทั้งคู่ใช้เพื่อสร้างอาร์เรย์แบบไดนามิกของวัตถุที่อาร์เรย์สามารถขยายขนาดได้ตามต้องการ มีความแตกต่างพื้นฐานสองประการที่แยกความแตกต่างของ ArrayList และ Vector คือ Vector เป็นของคลาสดั้งเดิมที่ถูกปรับโครงสร้างใหม่เพื่อรองรับคลาสคอลเลกชันในภายหลังในขณะที่ ArrayList เป็นคลาสคอลเล็กชันมาตรฐาน ความแตกต่างที่สำคัญอีกประการหนึ่งก็คือ ArrayList นั้นไม่ได้ซิงโครไนซ์ เวกเตอร์ถูกซิงโครไนซ์
ให้เราศึกษาความแตกต่างอื่น ๆ ด้วยความช่วยเหลือของตารางเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ความคล้ายคลึงกัน
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | ArrayList | เวกเตอร์ |
---|---|---|
ขั้นพื้นฐาน | คลาส ArrayList ไม่ได้รับการซิงโครไนซ์ | คลาสเวกเตอร์ถูกซิงโครไนซ์ |
ชั้นเรียนดั้งเดิม | ArrayList เป็นคลาสคอลเล็กชันมาตรฐาน | Vector เป็นคลาสดั้งเดิมที่ได้รับการออกแบบใหม่เพื่อรองรับคลาสคอลเลกชัน |
ประกาศคลาส | คลาส ArrayList | คลาสเวกเตอร์ |
การกำหนดใหม่ | เมื่อไม่ได้ระบุ ArrayList จะถูกเพิ่มขึ้นโดยขนาดครึ่งหนึ่ง | เมื่อไม่ได้ระบุเวกเตอร์จะเพิ่มขึ้นเป็นสองเท่าของขนาด |
ประสิทธิภาพ | เนื่องจาก ArrayList ไม่ได้ซิงโครไนซ์จึงทำงานได้เร็วกว่า Vector | เมื่อ Vector ถูกซิงโครไนซ์จะทำงานช้ากว่า ArrayList |
การแจงนับ / Iterator | ArrayList ใช้อินเตอร์เฟส Iterator เพื่อสำรวจวัตถุที่เก็บใน ArrayList | Vector ใช้การแจงนับรวมถึงส่วนต่อประสาน Iterator เพื่อสำรวจวัตถุที่เก็บในเวกเตอร์ |
ความหมายของ ArrayList
ArrayList เป็นของรายการของคลาสคอลเลกชันมาตรฐาน คลาส ArrayList ถูกกำหนดไว้ภายใน java.util แพคเกจมันขยาย AbstractList class ซึ่งเป็นคลาสคอลเล็กชันมาตรฐานและยังใช้ รายการอินเตอร์เฟสที่กำหนดใน Collection Interfaces ใน Java อาร์เรย์มาตรฐานมักมีความยาวคงที่เสมอ นั่นหมายถึงการสร้างครั้งเดียว; มันไม่ได้เติบโตหรือหดขนาดแบบไดนามิก ดังนั้นคุณควรมีความรู้ก่อนหน้านี้เกี่ยวกับความยาวของอาเรย์ที่คุณใช้ แต่บางครั้งมันอาจเกิดขึ้นที่ความยาวที่ต้องการถูกเปิดเผยที่รันไทม์ดังนั้นเพื่อจัดการสถานการณ์ประเภทนี้ Java ได้แนะนำ ArrayList
ArrayList เป็นคลาสที่ใช้สำหรับการสร้างอาเรย์แบบไดนามิกที่เก็บการอ้างอิงไปยังวัตถุ อาร์เรย์นี้สามารถขยายขนาดตามที่ต้องการ การประกาศคลาสมีดังนี้:
คลาส ArrayList นี่ E ระบุประเภทของวัตถุที่อาร์เรย์จะถือ อาร์เรย์ที่สร้างขึ้นมีความยาวผันแปรและเพิ่มขึ้นและลดขนาดเมื่อวัตถุถูกเพิ่มหรือลบออกจากรายการ ArrayList ไม่ได้ถูกซิงโครไนซ์นั่นหมายความว่าสามารถมีเธรดได้มากกว่าหนึ่งเธรดในอาร์เรย์ในเวลาเดียวกัน ตัวอย่างเช่นถ้าหนึ่งเธรดกำลังเพิ่มการอ้างอิงวัตถุไปยังอาร์เรย์และอีกเธรดหนึ่งกำลังลบการอ้างอิงวัตถุจากอาร์เรย์เดียวกันในเวลาเดียวกัน การสร้างอาเรย์แบบไดนามิกโดยใช้คลาส ArrayList: ArrayList ในรหัสข้างต้นคุณจะเห็นว่า; ฉันสร้างอาร์เรย์ของวัตถุประเภทสตริง ฉันเพิ่มวัตถุบางอย่างในอาร์เรย์ S1 โดยใช้ add () วิธีการและภายหลังลบวัตถุบางอย่างโดยใช้วิธีการ remove () คุณสามารถสังเกตได้ว่าคุณไม่ได้ระบุขนาดเริ่มต้นของอาร์เรย์ที่จะมีความยาว ‘0’ ในขณะที่คุณสามารถดูอาร์เรย์เติบโตและหดขนาดในขณะที่คุณเพิ่มและลบองค์ประกอบ Vector เป็นคลาส Legacy ที่ปรับโครงสร้างใหม่เพื่อรองรับคลาส Collection ในลำดับชั้น Collection Framework คลาสเวกเตอร์ยังถูกกำหนดด้วย java.util แพคเกจขยายโดย AbstractList ชั้นเรียนและดำเนินการโดย รายการ อินเตอร์เฟซ. คลาส Vector ถูกประกาศดังนี้: คลาสเวกเตอร์ ที่นี่ E กำหนดประเภทของวัตถุที่จะถูกเก็บไว้ในอาร์เรย์ อาร์เรย์ที่สร้างโดยใช้คลาส Vector นั้นมีความยาวผันแปรได้ มันเพิ่มขนาดของมันเป็นสองเท่าหากไม่ได้ระบุการเพิ่มขึ้น มาทำความเข้าใจกับการสร้างอาร์เรย์โดยใช้ Vector เวกเตอร์ ในโค้ดข้างต้นคุณจะเห็นได้ว่าฉันได้กล่าวถึงขนาดและค่าเพิ่มในตัวสร้างของ Vector ตามลำดับโดยเฉพาะในขณะที่ประกาศอาร์เรย์ของวัตถุสตริง ดังนั้นคุณสามารถสังเกตได้ว่าเมื่อขีด จำกัด ของอาร์เรย์เสร็จสิ้นจะเพิ่มขึ้นตามมูลค่าที่กำหนดให้กับตัวสร้างในขณะที่ประกาศ ฉันสรุปด้วยการพูดว่าการใช้ ArrayList นั้นดีกว่าการใช้ Vector เพราะมันทำงานได้เร็วขึ้นและดีขึ้น
คำจำกัดความของ Vector
ความคล้ายคลึงกัน:
สรุป: