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 ออนไลน์เหล่านี้