แนวคิดพื้นฐาน
ADT (Abstract Data Type) คือชนิดข้อมูลนามธรรมที่กำหนด "พฤติกรรม" ไม่ได้กำหนด "รายละเอียดการนำไปใช้" Array เป็น ADT เพราะจัดเก็บข้อมูลติดต่อกัน (Contiguous) และเข้าถึงได้โดย Index/Position โดยตรง
int[] arrA = new int[1]; String[] arrB = new String[1]; Person[] arrC = new Person[3]; // Person เป็น Class ที่กำหนดเอง
Array เป็น Abstract เพราะเก็บได้ทุกชนิด: int, String, Object ที่กำหนดเอง
ข้อดีของ Array
- Random Access อันรวดเร็ว: O(1) เข้าถึงทุก Index โดยตรง
- Memory Efficient: ใช้หน่วยความจำน้อยมาก มี Overhead เกือบเป็นศูนย์
ข้อเสียของ Array
- Insert/Delete ช้า: O(n) ต้องเลื่อนข้อมูล
- ขนาดคงที่ (Static): ต้องรู้ขนาดตอนสร้าง ขยายไม่ได้ (ต้องสร้างใหม่และคัดลอก)
ตัวอย่าง: Array-Based Implementation ของ ADT List (Java)
public class ListArrayBased implements ListInterface {
private static final int MAX_LIST = 50;
private Object[] items; // Array เก็บข้อมูล
private int numItems; // จำนวนข้อมูลจริง
public ListArrayBased() {
items = new Object[MAX_LIST];
numItems = 0;
}
// ... methods: add, remove, get, size, isEmpty ...
}
สรุป
Array เป็นพื้นฐานสำคัญของ Data Structure หลายตัว (ArrayList, Vector, Heap, Hash Table) เข้าใจข้อดี/ข้อเสียช่วยเลือกใช้ให้เหมาะสม: ใช้ Array ตอนเข้าถึงบ่อย/รู้ขนาดล่วงหน้า หลีกเลี่ยงตอน Insert/Delete บ่อย/ขนาดไม่แน่นอน