การจัดการข้อมูลเป็นหนึ่งในภารกิจหลักของโปรแกรมเมอร์ ความมีประสิทธิภาพในการเขียนโค้ดเพื่อจัดการข้อมูลอย่างง่ายดายและเข้าถึงข้อมูลได้อย่างรวดเร็วนั้น คือสิ่งที่ท้าทายไม่แพ้กับการเขียนโค้ดนั้นเอง ในภาษาโปรแกรมมิ่ง C# มีเครื่องมือหนึ่งที่ช่วยให้การจัดการข้อมูลแบบไดนามิคเป็นไปได้สะดวกขึ้นนั่นคือ `ArrayList`.
`ArrayList` เป็นคอลเลคชันที่มาพร้อมกับ .NET Framework และเป็นหนึ่งในคอลเลคชันที่ใช้งานกันอย่างแพร่หลาย เนื่องจากมันสามารถเก็บข้อมูลในรูปแบบที่ไม่ต้องระบุชนิดข้อมูล (Non-generic) และขนาดของ `ArrayList` นั้นสามารถเพิ่มหรือลดลงได้อย่างอิสระตามจำนวนข้อมูลที่เราจัดการ
ก่อนอื่นเราจะทำการสร้าง `ArrayList` ด้วยการใช้คำสั่ง `new`, เช่น:
ArrayList dataList = new ArrayList();
จากนั้นเราจะมาดูวิธีการจัดการข้อมูลต่างๆ:
การ Insert ข้อมูล
การใส่ข้อมูลเราสามารถใช้เมทอด `Add` ซึ่งจะเพิ่มข้อมูลต่อท้ายของ `ArrayList`.
dataList.Add("ข้อมูล");
การ InsertAtFront ข้อมูล
การใส่ข้อมูลไปยังตำแหน่งแรกสุดทำได้โดยการใช้เมทอด `Insert` ด้วย index 0:
dataList.Insert(0, "ข้อมูลใหม่ที่ต้น");
การ Find ข้อมูล
การค้นหาข้อมูลใน `ArrayList` สามารถทำได้ด้วยการใช้ loop หรือเมทอด `IndexOf`.
int index = dataList.IndexOf("ข้อมูลที่ค้นหา");
การ Delete ข้อมูล
การลบข้อมูลสามารถทำได้โดยการใช้เมทอด `Remove` หรือ `RemoveAt` ถ้ารู้ index ของข้อมูล.
dataList.Remove("ข้อมูลที่จะลบ"); // ลบโดยการระบุข้อมูล
dataList.RemoveAt(0); // ลบโดยการระบุ index
ข้อดี:
1. ความอเนกประสงค์: `ArrayList` สามารถเก็บข้อมูลได้หลายชนิดในตัวเองเนื่องจากเป็น Non-generic collection. 2. การเปลี่ยนแปลงขนาดได้อัตโนมัติ: คอลเลคชันสามารถขยายหรือลดขนาดตามจำนวนข้อมูล.ข้อเสีย:
1. ประสิทธิภาพ: เนื่องจาก `ArrayList` ต้องทำการ boxing และ unboxing ข้อมูลทั้งหมด เมื่อเทียบกับ Generic collections อาจทำให้มีประสิทธิภาพที่ต่ำกว่า. 2. ความปลอดภัยของชนิดข้อมูล: เนื่องจาก `ArrayList` เป็น Non-generic อาจจะเกิดข้อผิดพลาดขณะทำงานกับข้อมูลที่หลากหลายชนิด.
`ArrayList` เหมาะกับการใช้งานที่ต้องการคอลเลคชันที่มีขนาดเปลี่ยนแปลงไปตามการใช้งาน และไม่มีความจำเป็นต้องกำหนดชนิดข้อมูลอย่างเข้มงวด อย่างไรก็ตาม ถ้าคุณสนใจในการเขียนโค้ดที่มีความปลอดภัยและประสิทธิภาพสูงขึ้น การเลือกใช้ Generic collections เช่น `List
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM