ความแตกต่างระหว่าง ArrayList และ Vector ความแตกต่างระหว่าง

Anonim

ArrayList vs Vector

เวกเตอร์จะใช้อาร์เรย์ที่สามารถเติบโต / ลดขนาดเมื่อรันไทม์เมื่อมีการเพิ่มหรือลบองค์ประกอบบางส่วน มีการเข้าถึงองค์ประกอบต่างๆโดยใช้ดัชนีจำนวนเต็ม สองช่อง - กำลังการผลิตและความจุเพิ่มขึ้นลักษณะการจัดการพื้นที่เก็บข้อมูลเวกเตอร์ มีอินเตอร์เฟซสี่:

* รายการ

* การเข้าถึงแบบสุ่ม

* Cloneable

* อินเทอร์เฟซแบบอนุกรม

ArrayList เช่นเดียวกับ vectors ก็จะใช้อินเทอร์เฟซสี่แบบ อีกครั้งเช่น vectors ขนาดของมันสามารถเปลี่ยนแปลงได้ในระหว่างรันไทม์ นอกจากนี้ยังมีฟิลด์ที่เรียกว่า Capacity ซึ่งมีขนาดใหญ่เท่ากับขนาดของ ArrayList

ทั้งสองเวกเตอร์และ ArrayList เหมาะสำหรับเรียกดูองค์ประกอบจากตำแหน่งใดก็ได้รวมถึงการแทรกหรือลบองค์ประกอบออกจากส่วนท้ายของคลาสคอนเทนเนอร์

จากมุมมอง API ทั้งสองเวกเตอร์และ ArrayList จะคล้ายกันมาก ดังนั้นตรงที่ความแตกต่างระหว่างสองคืออะไร? ประเด็นต่อไปนี้จะทำให้เกิดความกระจ่างในเรื่องนี้:

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

2 การเติบโตของข้อมูล: ทั้ง ArrayList และองค์ประกอบเวกเตอร์จะถูกเก็บเป็นอาร์เรย์ แต่เวกเตอร์มีขนาดเริ่มต้นเท่ากับ 10 และ ArrayList ไม่มีขนาดดีฟอลต์ เมื่อเพิ่มองค์ประกอบให้กับ ArrayList หรือเวกเตอร์มีโอกาสที่ชั้นใดจะหมดไปจากห้อง ในกรณีเช่นนี้เวกเตอร์จะเพิ่มขนาดเป็นสองเท่าในขณะที่ขนาด ArrayList เพิ่มขึ้น 50% คุณสามารถตั้งค่าที่เพิ่มขึ้นในกรณีของเวกเตอร์ที่ไม่สามารถใช้งานได้สำหรับ ArrayList

3 การตรวจสอบองค์ประกอบ: ArrayList มีข้อได้เปรียบที่นี่เนื่องจากคุณสามารถเข้าถึงองค์ประกอบต่างๆได้โดยใช้ดัชนี ในกรณีของเวกเตอร์คุณต้องสร้างอิเลกเตอร์เพื่อสำรวจองค์ประกอบต่างๆ

สรุป:

1. ถ้าคลาสคอนเทนเนอร์ถูกดัดแปลงโดยเธรดเดียวหรือตัวแปรท้องถิ่นบางตัวคุณควรใช้ ArrayList

2 เมื่อมีการเข้าถึงคลาสคอนเทนเนอร์หลายเธรดจากนั้นใช้เวกเตอร์มิฉะนั้นคุณจะต้องทำข้อมูลให้ตรงกันด้วยตนเอง

3 เราสามารถระบุขนาดที่เพิ่มขึ้นพร้อมกับเวกเตอร์และ ArrayList ที่เราไม่สามารถทำได้

4 เวกเตอร์ถูกซิงโครไนซ์และ ArrayList ไม่ได้

5 เวกเตอร์สามารถเพิ่มขนาดได้สองเท่า ArrayList สามารถเพิ่มได้ 50%