อาร์เรย์เทียบกับรายการอาร์เรย์
อาร์เรย์คือโครงสร้างข้อมูลที่ใช้บ่อยที่สุดในการจัดเก็บคอลเลกชั่นขององค์ประกอบ ภาษาโปรแกรมส่วนใหญ่มีวิธีการประกาศอาร์เรย์และการเข้าถึงองค์ประกอบในอาร์เรย์อย่างง่ายดาย รายการอาร์เรย์สามารถมองเห็นเป็นอาร์เรย์แบบไดนามิกซึ่งสามารถขยายขนาดได้ ด้วยเหตุนี้ โปรแกรมเมอร์จึงไม่จำเป็นต้องรู้ขนาดของรายการอาร์เรย์เมื่อเธอกำหนดมัน
อาร์เรย์คืออะไร
แสดงในรูปที่ 1 เป็นโค้ดที่ปกติใช้ในการประกาศและกำหนดค่าให้กับอาร์เรย์ รูปที่ 2 แสดงให้เห็นว่าอาร์เรย์จะมีลักษณะอย่างไรในหน่วยความจำ
int ค่า[5]; values[0]=100; values[1]=101; values[2]=102; values[3]=103; values[4]=104; |
ภาพที่ 1: รหัสสำหรับการประกาศและกำหนดค่าให้กับอาร์เรย์
100 | 101 | 102 | 103 | 104 |
ดัชนี: 0 | 1 | 2 | 3 | 4 |
รูปที่ 2: Array ที่เก็บไว้ในหน่วยความจำ
เหนือโค้ด กำหนดอาร์เรย์ที่สามารถเก็บจำนวนเต็มได้ 5 จำนวน และเข้าถึงได้โดยใช้ดัชนี 0 ถึง 4 คุณสมบัติที่สำคัญอย่างหนึ่งของอาร์เรย์คืออาร์เรย์ทั้งหมดได้รับการจัดสรรเป็นบล็อกหน่วยความจำเดียว และแต่ละองค์ประกอบจะได้รับ พื้นที่ของตัวเองในอาร์เรย์เมื่อกำหนดอาร์เรย์แล้ว ขนาดของอาร์เรย์จะคงที่ ดังนั้น หากคุณไม่แน่ใจเกี่ยวกับขนาดของอาร์เรย์ในขณะคอมไพล์ คุณจะต้องกำหนดอาร์เรย์ที่ใหญ่พอที่จะอยู่ในด้านที่ปลอดภัย แต่โดยส่วนใหญ่แล้ว เราจะใช้องค์ประกอบน้อยกว่าที่เราจัดสรรไว้ ดังนั้นหน่วยความจำจำนวนมากจึงสูญเปล่าจริง ๆ ในทางกลับกัน ถ้า “อาร์เรย์ที่ใหญ่เพียงพอ” ไม่ใหญ่พอจริง ๆ โปรแกรมก็จะขัดข้อง
Arraylists คืออะไร
รายการอาร์เรย์สามารถมองเห็นเป็นอาร์เรย์ไดนามิกซึ่งสามารถขยายขนาดได้ ดังนั้น รายการอาร์เรย์จึงเหมาะอย่างยิ่งที่จะใช้ในสถานการณ์ที่คุณไม่ทราบขนาดขององค์ประกอบที่จำเป็นในขณะที่ประกาศ ใน Java รายการอาร์เรย์สามารถเก็บวัตถุได้เท่านั้น ไม่สามารถเก็บประเภทดั้งเดิมได้โดยตรง (คุณสามารถใส่ประเภทดั้งเดิมไว้ในวัตถุหรือใช้คลาส wrapper ของประเภทดั้งเดิมได้) โดยทั่วไป รายการอาร์เรย์จะมีวิธีการแทรก ลบ และค้นหา ความซับซ้อนของเวลาในการเข้าถึงองค์ประกอบคือ o(1) ในขณะที่การแทรกและการลบนั้นมีความซับซ้อนของเวลาเป็น o(n)ใน Java สามารถข้ามรายการอาร์เรย์โดยใช้ลูป foreach วนซ้ำ หรือเพียงแค่ใช้ดัชนี
ความแตกต่างระหว่าง Array และ Arraylists
แม้ว่าอาร์เรย์และรายการอาร์เรย์จะคล้ายกันในแง่ที่ว่าทั้งคู่ถูกใช้เพื่อจัดเก็บคอลเลกชั่นขององค์ประกอบ แต่ก็แตกต่างกันในวิธีการกำหนด ต้องระบุขนาดของอาร์เรย์เมื่อกำหนดอาร์เรย์ แต่คุณสามารถกำหนดรายการอาร์เรย์ได้โดยไม่ต้องทราบขนาดจริง คุณสามารถเพิ่มองค์ประกอบลงในรายการอาร์เรย์ได้หลังจากกำหนดแล้ว ซึ่งไม่สามารถทำได้ในอาร์เรย์ แต่ใน Java รายการอาร์เรย์ไม่สามารถเก็บประเภทดั้งเดิมได้ แต่อาร์เรย์สามารถใช้เก็บประเภทดั้งเดิมได้ แต่ถ้าคุณต้องการโครงสร้างข้อมูลที่สามารถปรับขนาดได้ arraylist จะเป็นตัวเลือกที่ดีที่สุด