Skip to Content

ArrayList

วันนี้เรามาเรียนรู้เกี่ยวกับ ArrayList ใน Java กัน ArrayList เป็นโครงสร้างข้อมูลที่ยืดหยุ่นและใช้งานง่าย ซึ่งแก้ไขข้อจำกัดบางอย่างของอาร์เรย์ธรรมดา

ArrayList คืออะไร?

ArrayList เป็นเหมือนกับอาร์เรย์ที่ขยายขนาดได้อัตโนมัติ คุณสามารถเพิ่มหรือลบข้อมูลได้ตามต้องการโดยไม่ต้องกังวลเรื่องขนาด

ลองนึกภาพรางรถไฟที่สามารถเพิ่มหรือลดจำนวนตู้ได้ตามจำนวนผู้โดยสาร นั่นแหละคือ ArrayList ในชีวิตจริง! 🚂

การสร้าง ArrayList

ก่อนใช้ ArrayList เราต้อง import มันก่อน:

import java.util.ArrayList; public class ตัวอย่างArrayList { public static void main(String[] args) { // สร้าง ArrayList ของ String ArrayList<String> รายชื่อผลไม้ = new ArrayList<>(); // สร้าง ArrayList ของ Integer ArrayList<Integer> ตัวเลข = new ArrayList<>(); } }

การเพิ่มข้อมูลใน ArrayList

เราใช้เมธอด add() เพื่อเพิ่มข้อมูลใน ArrayList:

ArrayList<String> รายชื่อผลไม้ = new ArrayList<>(); รายชื่อผลไม้.add("แอปเปิ้ล"); รายชื่อผลไม้.add("กล้วย"); รายชื่อผลไม้.add("ส้ม"); System.out.println(รายชื่อผลไม้); // แสดง: [แอปเปิ้ล, กล้วย, ส้ม]

การเข้าถึงและแก้ไขข้อมูลใน ArrayList

เราใช้เมธอด get() เพื่อเข้าถึงข้อมูล และ set() เพื่อแก้ไขข้อมูล:

ArrayList<String> รายชื่อผลไม้ = new ArrayList<>(); รายชื่อผลไม้.add("แอปเปิ้ล"); รายชื่อผลไม้.add("กล้วย"); รายชื่อผลไม้.add("ส้ม"); System.out.println("ผลไม้ชิ้นที่สอง: " + รายชื่อผลไม้.get(1)); // แสดง: กล้วย รายชื่อผลไม้.set(1, "มะม่วง"); System.out.println("ผลไม้ชิ้นที่สองหลังแก้ไข: " + รายชื่อผลไม้.get(1)); // แสดง: มะม่วง

การลบข้อมูลจาก ArrayList

เราสามารถลบข้อมูลได้โดยใช้เมธอด remove():

ArrayList<String> รายชื่อผลไม้ = new ArrayList<>(); รายชื่อผลไม้.add("แอปเปิ้ล"); รายชื่อผลไม้.add("กล้วย"); รายชื่อผลไม้.add("ส้ม"); รายชื่อผลไม้.remove("กล้วย"); System.out.println(รายชื่อผลไม้); // แสดง: [แอปเปิ้ล, ส้ม] รายชื่อผลไม้.remove(0); // ลบข้อมูลตำแหน่งที่ 0 System.out.println(รายชื่อผลไม้); // แสดง: [ส้ม]

การหาขนาดของ ArrayList

เราใช้เมธอด size() เพื่อหาจำนวนข้อมูลใน ArrayList:

ArrayList<String> รายชื่อผลไม้ = new ArrayList<>(); รายชื่อผลไม้.add("แอปเปิ้ล"); รายชื่อผลไม้.add("กล้วย"); รายชื่อผลไม้.add("ส้ม"); System.out.println("จำนวนผลไม้: " + รายชื่อผลไม้.size()); // แสดง: 3

การวนลูปผ่าน ArrayList

เราสามารถใช้ลูป for-each เพื่อทำงานกับทุกข้อมูลใน ArrayList ได้:

ArrayList<String> รายชื่อผลไม้ = new ArrayList<>(); รายชื่อผลไม้.add("แอปเปิ้ล"); รายชื่อผลไม้.add("กล้วย"); รายชื่อผลไม้.add("ส้ม"); for (String ผลไม้ : รายชื่อผลไม้) { System.out.println("ฉันชอบกิน " + ผลไม้); }

ข้อดีของ ArrayList เมื่อเทียบกับอาร์เรย์ธรรมดา

  1. ขนาดยืดหยุ่น: เพิ่มหรือลดขนาดได้ตามต้องการ
  2. มีเมธอดให้ใช้มากมาย เช่น add(), remove(), contains()
  3. สามารถเก็บ Objects ได้ (ไม่จำกัดแค่ primitive types)
  4. ใช้งานง่ายกว่าเมื่อต้องการจัดการกับข้อมูลที่มีการเปลี่ยนแปลงบ่อย

ตัวอย่างการใช้งานจริง

มาลองทำโปรแกรมจัดการรายการสิ่งที่ต้องทำ (To-Do List) ง่ายๆ กัน:

import java.util.ArrayList; import java.util.Scanner; public class ToDoList { public static void main(String[] args) { ArrayList<String> todoList = new ArrayList<>(); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("\n1. เพิ่มงาน"); System.out.println("2. แสดงรายการงาน"); System.out.println("3. ลบงาน"); System.out.println("4. ออกจากโปรแกรม"); System.out.print("เลือกตัวเลือก (1-4): "); int choice = scanner.nextInt(); scanner.nextLine(); // ล้างบรรทัดว่าง switch (choice) { case 1: System.out.print("ใส่งานที่ต้องทำ: "); String task = scanner.nextLine(); todoList.add(task); System.out.println("เพิ่มงานเรียบร้อย!"); break; case 2: System.out.println("\nรายการสิ่งที่ต้องทำ:"); for (int i = 0; i < todoList.size(); i++) { System.out.println((i+1) + ". " + todoList.get(i)); } break; case 3: System.out.print("ใส่หมายเลขงานที่ต้องการลบ: "); int index = scanner.nextInt() - 1; if (index >= 0 && index < todoList.size()) { todoList.remove(index); System.out.println("ลบงานเรียบร้อย!"); } else { System.out.println("หมายเลขงานไม่ถูกต้อง!"); } break; case 4: System.out.println("ขอบคุณที่ใช้โปรแกรม!"); scanner.close(); return; default: System.out.println("ตัวเลือกไม่ถูกต้อง กรุณาลองใหม่"); } } } }

สรุป

ArrayList เป็นโครงสร้างข้อมูลที่มีประโยชน์มากใน Java ด้วยความยืดหยุ่นและใช้งานง่าย ทำให้เหมาะสำหรับการจัดการข้อมูลที่มีการเปลี่ยนแปลงบ่อย เช่น รายการสินค้า หรือรายชื่อผู้ใช้

ปรับปรุงล่าสุด