ความแตกต่างระหว่าง ArrayList และ Vector
ความคล้ายคลึงกัน:
1. ArrayList และ Vector ทั้งคู่สืบทอดคลาสแม่เดียวกันและใช้อินเทอร์เฟซเดียวกัน
2. เลเยอร์ด้านล่างถูกนำมาใช้โดยอาร์เรย์
3. ความยาวเริ่มต้นเริ่มต้นคือ 10
ความแตกต่าง:
1. การซิงโครไนซ์:
วิธีการสาธารณะส่วนใหญ่ในเวกเตอร์เพิ่มคำหลักที่ซิงโครไนซ์เพื่อให้แน่ใจว่าการซิงโครไนซ์ของวิธีการนั่นคือเวกเตอร์เธรดปลอดภัยและเธรด ArrayList ไม่ปลอดภัย
2. การขยายตัวที่แตกต่างกัน
คุณสมบัติภายในที่แตกต่างกันอาจเป็นสาเหตุของวิธีการปรับขนาดที่แตกต่างกัน
ArrayList มีคุณสมบัติสองประการคืออาร์เรย์ ElementData ที่เก็บข้อมูลและขนาดที่เก็บจำนวนระเบียน
Vector มีคุณสมบัติสามประการ: อาร์เรย์ ElementData ที่เก็บข้อมูลองค์ประกอบที่เก็บจำนวนระเบียนและความสามารถในการขยายตัวของปัจจัยการขยายตัวที่ขยายขนาดอาร์เรย์
วิธีการขยาย ArrayList
//jdk1.8.0_91private โมฆะเติบโต (int mincapacity) {// รหัสที่ใส่ใจล้น int oldcapacity = elementData.length; int newCapacity = oldCapacity + (oldcapacity >> 1); if (newCapacity - mincapacity <0) newCapacity = mincapacity; if (newCapacity - max_array_size> 0) newcapacity = hugecapacity (mincapacity); // mincapacity มักจะใกล้เคียงกับขนาดดังนั้นนี่คือการชนะ: elementData = arrays.copyof (ElementData, newCapacity); -จะเห็นได้ว่าเมื่อพบเงื่อนไขการขยายตัวขนาดอาร์เรย์ขยายคือ 1.5 เท่าของความยาวอาร์เรย์ดั้งเดิมและพารามิเตอร์ที่ส่งผ่านขนาดใหญ่ขึ้น
วิธีการขยายเวกเตอร์
//jdk1.8.0_91private โมฆะเติบโต (int mincapacity) {// รหัสที่ใส่ใจล้น int oldcapacity = elementData.length; int newCapacity = oldCapacity + ((ความสามารถในการผลิต> 0)? ความสามารถในการผลิต: oldCapacity); if (newCapacity - mincapacity <0) newCapacity = mincapacity; if (newCapacity - max_array_size> 0) newcapacity = hugecapacity (mincapacity); elementData = arrays.copyof (ElementData, newCapacity); -จะเห็นได้ว่าเมื่อปัจจัยการขยายตัวมากกว่า 0 ความยาวของอาร์เรย์ใหม่คือความยาวอาร์เรย์ดั้งเดิม + ปัจจัยการขยายมิฉะนั้นความยาวของอาร์เรย์ย่อยย่อยจะมีความยาวเป็นสองเท่าของอาร์เรย์ดั้งเดิม เปรียบเทียบความยาวอาร์เรย์ใหม่ที่สร้างขึ้นข้างต้นกับความยาวพารามิเตอร์ที่ผ่านมา
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!