ArrayList ใน Java: บทนำสำหรับผู้เริ่มต้น [2022]
เผยแพร่แล้ว: 2022-11-22อาร์เรย์เป็นโครงสร้างข้อมูลที่แพร่หลายและจำเป็นในทุกภาษาโปรแกรม โดยมีข้อเสียอย่างหนึ่งคือขนาดของมันจะคงที่ มาดูกันว่า ArrayList ใน Java สามารถช่วยเรื่องนี้ได้อย่างไร
อาร์เรย์สามารถมีได้สองประเภท: อาร์เรย์แบบคงที่หรืออาร์เรย์แบบไดนามิก ไม่สามารถเพิ่มอาร์เรย์แบบไดนามิกในภาษาการเขียนโปรแกรมเช่น Java ขนาดของอาร์เรย์จะถูกประกาศระหว่างการเริ่มต้นอาร์เรย์แทน แต่ในหลายกรณี สิ่งนี้สามารถนำไปสู่ปัญหามากมาย เพื่อแก้ปัญหานี้ ArrayLists ใช้ใน Java ขนาดอาร์เรย์จะเพิ่มขึ้นโดยอัตโนมัติเมื่อองค์ประกอบถูกพุชไปยัง ArrayList
ในบทความนี้ คุณจะได้เรียนรู้เกี่ยวกับ ArrayLists ใน Java คุณจะเข้าใจความแตกต่างหลักระหว่าง Array และ ArrayList และเรียนรู้เกี่ยวกับ ArrayLists ประเภทต่างๆ และวิธีการใช้งาน
อาร์เรย์กับ ArrayList
ข้อแตกต่างหลักระหว่าง Array และ ArrayList คือขนาดของ Array นั้นคงที่ แต่ขนาด ArrayList สามารถเป็นไดนามิกได้ เนื่องจากอาร์เรย์ได้รับการแก้ไข เวลาในการวนซ้ำอาร์เรย์จึงใช้เวลาน้อยกว่าอาร์เรย์แบบไดนามิก
นอกจากนี้ยังมีความแตกต่างอีกเล็กน้อยระหว่างพวกเขา
- อาร์เรย์แบบสแตติกสามารถเป็นแบบเดี่ยวหรือหลายมิติได้ แต่ ArrayList สามารถเป็นแบบมิติเดียวเท่านั้น
- อาร์เรย์เป็นโครงสร้างข้อมูลดั้งเดิมที่มีอยู่ใน Java แต่ ArrayList เป็นส่วนหนึ่งของ Collection Framework API ใน Java มันถูกสร้างขึ้นบนอาร์เรย์
- คุณสามารถประกาศอาร์เรย์ด้วยประเภทข้อมูลดั้งเดิม ไม่สามารถใช้ชนิดข้อมูลดั้งเดิมใน ArrayList หากคุณต้องการใช้ชนิดข้อมูลดั้งเดิม คุณจะต้องใช้คลาสตัวห่อหุ้มที่สอดคล้องกันของชนิดข้อมูลนั้น
ประเภทของ ArrayLists ใน Java
ArrayLists สามารถเป็นประเภทใดก็ได้ แต่คุณจะต้องผ่านคลาส wrapper ที่สอดคล้องกัน เนื่องจากคุณไม่สามารถส่งประเภทข้อมูลดั้งเดิมใน ArrayList ได้
คุณสามารถเพิ่มประเภทข้อมูลอย่างง่าย เช่น จำนวนเต็มหรือประเภทสตริง โดยผ่านคลาสตัวตัดคำ เช่น Integer
หรือ String
คุณยังสามารถส่งผ่านประเภทที่ซับซ้อน เช่น ArrayLists of ArrayLists, hashmaps เป็นต้น
มาดูตัวอย่างการใช้คลาสแบบกำหนดเองภายใน ArrayList
import java.util.ArrayList; class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public void getUser() { System.out.println("Name: " + name + " Age: " + age); } } class Main { public static void main(String[] args) { ArrayList<User> users = new ArrayList<>(); users.add(new User("Subha", 25)); users.add(new User("Dan", 32)); users.forEach(user -> { user.getUser(); }); } } Output: Name: Subha Age: 25 Name: Dan Age: 32
ในตัวอย่างโค้ดด้านบน มีการสร้าง ArrayList ประเภท User
คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับวิธีการที่ใช้ในตัวอย่างด้านล่างนี้
การสร้าง ArrayList ใน Java
คุณเข้าใจพื้นฐานของ ArrayList ใน Java แล้ว ตอนนี้ มาดูที่ไวยากรณ์ของ ArrayList และหลังจากนั้น เราจะดูว่าสามารถนำไปใช้ในโค้ด Java ได้อย่างไร
ArrayList<Type> listName = new ArrayList<>();
ตัวอย่างด้านบนแสดงไวยากรณ์ของการกำหนด ArrayList Type
กำหนดประเภทของ ArrayList ตัวอย่างเช่น หากคุณต้องการประกาศ ArrayList ของประเภทข้อมูลจำนวนเต็ม คุณสามารถส่งผ่าน <Integer>
โปรดทราบว่าคุณไม่สามารถส่งผ่าน int
ได้เนื่องจากเป็นประเภทข้อมูลดั้งเดิม
คุณจะต้องนำเข้า java.util.ArrayList
เพื่อใช้ ArrayList ในโปรแกรมของคุณ นี่คือตัวอย่างพื้นฐานของโปรแกรมที่ประกาศ ArrayList:
import java.util.ArrayList; class Main { public static void main(String[] args) { // Declare An ArrayList ArrayList<String> rainbow = new ArrayList<>(); System.out.println(rainbow); } } Output: []
ในโค้ดข้างต้น มีการประกาศ ArrayList ชื่อ rainbow
ของประเภท String
ในการทำงานกับ ArrayList มีหลายวิธี ลองมาดูสองสามวิธี
วิธีการ add
คลาส ArrayList มีเมธอดต่างๆ สำหรับการดำเนินการ เช่น การเพิ่มหรือลบองค์ประกอบ การรับค่า การตั้งค่าในตำแหน่งเฉพาะ การล้าง ArrayList เป็นต้น
วิธีแรกที่เราจะเห็นคือวิธี add
วิธีการ add
ใช้สำหรับเพิ่มรายการเดียวใน ArrayList
ไวยากรณ์สำหรับการ add
แสดงไว้ด้านล่าง
arrayList.add(int i, Element)
มาทำความเข้าใจไวยากรณ์กัน พารามิเตอร์แรก i
เป็นพารามิเตอร์เผื่อเลือกที่แสดงตำแหน่งดัชนีของรายการที่คุณต้องการเพิ่ม Element
พารามิเตอร์ที่สองคือองค์ประกอบที่คุณต้องการเพิ่ม ลองมาดูตัวอย่างกัน
rainbow.add("Violet"); System.out.println(rainbow); Output: [Violet] rainbow.add(0, "Red"); System.out.println(rainbow); Output: [Red, Violet]
the rainbow.add("Violet")
เพิ่มองค์ประกอบที่ส่วนท้ายของ ArrayList และ rainbow.add(0, "Red")
เพิ่มองค์ประกอบ Red
ไปยังตำแหน่งดัชนี 0
ของ ArrayList เมธอด add()
คืนค่า true
เมื่อแทรกรายการสำเร็จ

วิธีการ get
เมธอด get
ใช้เพื่อรับค่าจากตำแหน่งที่ระบุจาก ArrayList
arrayList.get(int i);
i
แสดงในไวยากรณ์ด้านบนคือตำแหน่งดัชนี ตัวอย่างเช่น หากคุณต้องการรับไอเท็มจากตำแหน่งดัชนี 1
ให้เขียน arrayList.get(1)
rainbow.add("Violet"); rainbow.add(0, "Red"); String color = rainbow.get(1); System.out.println(color); Output: Violet
โค้ดด้านบนจะส่งกลับ Violet
จาก ArrayList rainbow
วิธีการ set
เมธอด set
ใช้เพื่อแทนที่ค่าของรายการ ตัวอย่างเช่น หากคุณต้องการแทนที่ค่าของรายการที่ตำแหน่งดัชนี 0
ให้คุณเขียน rainbow.set(0, "Purple")
โดยสมมติว่าคุณมี ArrayList ชื่อ rainbow
ไวยากรณ์สำหรับวิธีการ set
มีดังนี้
arrayList.set(int i, Element);
โดยที่ i
คือตำแหน่งดัชนี และ Element
คือค่าขององค์ประกอบใหม่
rainbow.add("Violet"); System.out.println(rainbow); Output: [Violet] rainbow.add(0, "Red"); System.out.println(rainbow); Output: [Red, Violet] rainbow.set(1, "Purple"); System.out.println(rainbow); Output: [Red, Purple]
ในตัวอย่างข้างต้น เราเพิ่มค่าสองค่าให้กับ ArrayList ที่เรียกว่า rainbow
ขั้นแรก เพิ่มองค์ประกอบ Violet
จากนั้นที่ตำแหน่ง 0
ของ ArrayList เราเพิ่มรายการ Red
ณ จุดนี้ ArrayList ที่สมบูรณ์จะมีลักษณะดังนี้ [Red, Violet]
ตอนนี้องค์ประกอบที่ตำแหน่งดัชนี 1
จะถูกแทนที่ด้วยค่า Purple
โดยใช้วิธี set
หลังจากเปลี่ยนค่าแล้ว ArrayList จะมีลักษณะดังนี้ [Red, Purple]
วิธีการ remove
วิธีการ remove
ArrayList ใช้สำหรับลบค่าออกจาก ArrayList คุณสามารถส่งค่าหรือตำแหน่งดัชนีของค่าที่คุณต้องการลบ ไวยากรณ์สำหรับวิธีการ remove
แสดงอยู่ด้านล่าง:
arrayList.remove(Object value); // or arrayList.remove(int i);
ลองมาเป็นตัวอย่างเพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับวิธีการ สมมติว่าคุณมี ArrayList ชื่อ rainbow
ด้วยค่าเหล่านี้ [Violet, Red, Green]
ตอนนี้ ถ้าคุณต้องการลบ Red
ออกจาก ArrayList คุณสามารถเขียน rainbow.remove("Red");
. การเรียกเมธอดนี้บน ArrayList rainbow
จะลบองค์ประกอบ Red
ออกจากมัน
// rainbow = [Violet, Red, Green] rainbow.remove("Red"); System.out.println(rainbow); Output: [Violet, Green]
คุณยังสามารถผ่านตำแหน่งดัชนีเพื่อลบรายการที่ตำแหน่งดัชนี
//rainbow = [Red, Green] rainbow.remove(0); // Remove item at index position 0 System.out.println(rainbow); Output: [Green]
วิธีการ clear
ตามชื่อที่แนะนำ วิธีการ clear
จะลบองค์ประกอบทั้งหมดออกจาก ArrayList ไวยากรณ์ตรงไปตรงมาและไม่ใช้พารามิเตอร์ใดๆ
arraylist.clear()
ลองมาดูตัวอย่าง
rainbow.clear(); System.out.println(rainbow); Output: []
วิธีการ clear
ไม่ส่งคืนค่าใด ๆ แต่จะล้างค่าของ ArrayList ที่กำหนดแทน
size
วิธี
เมธอด size
จะคืนค่าขนาดของ ArrayList ที่กำหนด วิธีนี้ยังไม่ใช้พารามิเตอร์ใดๆ ไวยากรณ์แสดงอยู่ด้านล่าง
arrayList.size();
arrayList
คือชื่อของ ArrayList ที่นี่ มาทำความเข้าใจวิธีการ size
ด้วยความช่วยเหลือของตัวอย่าง
ArrayList<String> rainbow = new ArrayList<>(); rainbow.add("Violet"); rainbow.add("Red"); rainbow.add("Green"); System.out.println(rainbow.size()); Output: 3
เมธอดนี้คืนค่าขนาด ArrayList ในตัวอย่างด้านบน rainbow
ArrayList ประกอบด้วยค่าสามค่า ดังนั้นเมธอด size
จะคืนค่าเป็น 3
บทสรุป
บทความนี้กล่าวถึง ArrayList คืออะไรและแตกต่างจาก Array อย่างไร เรายังเห็นว่าสามารถประกาศและใช้ ArrayList ได้อย่างไรโดยใช้เมธอดต่างๆ ที่มีให้สำหรับคลาส ArrayList
หากคุณต้องการเจาะลึกการเรียนรู้ Java ลองดูหลักสูตร Java ออนไลน์เหล่านี้