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 เมื่อเทียบกับอาร์เรย์ธรรมดา
- ขนาดยืดหยุ่น: เพิ่มหรือลดขนาดได้ตามต้องการ
- มีเมธอดให้ใช้มากมาย เช่น
add(),remove(),contains() - สามารถเก็บ Objects ได้ (ไม่จำกัดแค่ primitive types)
- ใช้งานง่ายกว่าเมื่อต้องการจัดการกับข้อมูลที่มีการเปลี่ยนแปลงบ่อย
ตัวอย่างการใช้งานจริง
มาลองทำโปรแกรมจัดการรายการสิ่งที่ต้องทำ (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 ด้วยความยืดหยุ่นและใช้งานง่าย ทำให้เหมาะสำหรับการจัดการข้อมูลที่มีการเปลี่ยนแปลงบ่อย เช่น รายการสินค้า หรือรายชื่อผู้ใช้