PlusMagi's Blog By Pitt Phunsanit Backend,Database Java Collections Framework: สรุปวิธีใช้งาน List (ArrayList/LinkedList), Set (HashSet) และ Map (HashMap)

Java Collections Framework: สรุปวิธีใช้งาน List (ArrayList/LinkedList), Set (HashSet) และ Map (HashMap)

ในฐานะ System Architect การจัดการโครงสร้างข้อมูล (Data Structures) อย่างมีประสิทธิภาพถือเป็นรากฐานสำคัญของการออกแบบระบบที่สามารถขยายขนาด (Scalability) และทำงานได้อย่างรวดเร็ว ไม่ว่าจะเป็นการจัดการข้อมูลในหน่วยความจำ (Java) หรือการจัดเก็บในฐานข้อมูลเชิงสัมพันธ์ (PostgreSQL) การทำความเข้าใจความแตกต่างระหว่าง List, Set, และ Map จึงเป็นสิ่งจำเป็นอย่างยิ่ง

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

1. List (ลำดับข้อมูล) – การจัดเก็บแบบมีลำดับ (Ordered Sequence)

List ถูกออกแบบมาเพื่อเก็บข้อมูลที่ต้องการรักษาลำดับการเข้าถึง (Order) ซึ่งเปรียบเสมือนการเก็บรายการสินค้าตามลำดับที่ได้รับหรือตามดัชนี (Index) ใน PostgreSQL เราสามารถจำลองโครงสร้างนี้ได้โดยการใช้ Array Type หรือการสร้างตารางที่มี Primary Key เป็นลำดับ

ตัวอย่างการใช้งาน (PostgreSQL Array):

SQL

-- สร้างข้อมูลรายการสินค้าตามลำดับ (List) โดยใช้ Array Type<br>INSERT INTO product_list (product_array) VALUES ('apple', 'banana', 'orange');<br><br>-- การเข้าถึงข้อมูลตามลำดับ (Index 1 คือ 'banana')<br>SELECT product_array[2] FROM product_list;

2. Set (ชุดข้อมูล) – การรับประกันความไม่ซ้ำกัน (Unique Elements)

Set คือโครงสร้างที่รับประกันว่าทุกองค์ประกอบจะต้องไม่ซ้ำกัน (Unique) หากมีการพยายามเพิ่มค่าที่ซ้ำกัน ระบบจะทำการละเลยค่าดังกล่าว แนวคิดนี้สำคัญอย่างยิ่งในการทำความสะอาดข้อมูล (Data Cleansing) ใน PostgreSQL เราสามารถใช้คำสั่ง DISTINCT เพื่อจำลองพฤติกรรมของ Set ได้อย่างมีประสิทธิภาพ

ตัวอย่างการใช้งาน (PostgreSQL DISTINCT):

SQL

-- สมมติว่ามีตารางที่เก็บข้อมูลการสั่งซื้อที่มีการบันทึกสินค้าซ้ำกัน<br>CREATE TABLE purchase_data (item_name TEXT);<br>INSERT INTO purchase_data VALUES ('milk'), ('bread'), ('milk'), ('eggs');<br><br>-- การดึงเฉพาะรายการสินค้าที่ไม่ซ้ำกัน (Set Behavior)<br>SELECT DISTINCT item_name FROM purchase_data;

3. Map (คู่คีย์-ค่า) – การอ้างอิงด้วยคีย์เฉพาะ (Key-Value Pair)

Map เป็นโครงสร้างที่ทรงพลังที่สุดสำหรับการค้นหาข้อมูล เพราะแทนที่จะค้นหาด้วยลำดับหรือความไม่ซ้ำกัน แต่เราจะค้นหาด้วย ‘คีย์’ (Key) ที่เป็นเอกลักษณ์ ซึ่งคู่คีย์-ค่านี้ทำให้การเข้าถึงข้อมูลทำได้อย่างรวดเร็วมาก (O(1) Time Complexity) ใน PostgreSQL โครงสร้างนี้ถูกจำลองโดยการใช้ตารางที่มีคอลัมน์ Primary Key เป็นตัวแทนของ ‘คีย์’ และคอลัมน์อื่นเป็นตัวแทนของ ‘ค่า’

ตัวอย่างการใช้งาน (PostgreSQL Key-Value Table):

SQL

-- สร้างตารางจำลอง Map (Key: user_id, Value: user_name)<br>CREATE TABLE user_map (user_id INT PRIMARY KEY, user_name TEXT);<br>INSERT INTO user_map VALUES (101, 'Alice'), (102, 'Bob');<br><br>-- การดึงค่าโดยใช้คีย์ (Lookup by Key)<br>SELECT user_name FROM user_map WHERE user_id = 101;

บทสรุป: การเลือกใช้โครงสร้างที่เหมาะสม

การเลือกใช้โครงสร้างข้อมูลที่ถูกต้องคือหัวใจของการเป็น Senior Architect: หากคุณต้องการรักษาลำดับข้อมูล ให้ใช้แนวคิดแบบ **List** (Array/Ordered Table); หากคุณต้องการรับประกันความไม่ซ้ำกันของข้อมูล ให้ใช้แนวคิดแบบ **Set** (SELECT DISTINCT); และถ้าคุณต้องการการค้นหาข้อมูลที่รวดเร็วด้วยการอ้างอิงเฉพาะตัว ให้ใช้แนวคิดแบบ **Map** (Key-Value Table) การทำความเข้าใจความแตกต่างเหล่านี้จะช่วยให้คุณออกแบบ Query และ Schema ใน PostgreSQL ได้อย่างมีประสิทธิภาพสูงสุด