คุณเบื่อที่ต้องประกาศขนาดของอาร์เรย์ก่อนจึงจะใช้งานได้หรือไม่? คุณไม่ใช่คนเดียว เนื่องจากไม่สะดวกเสมอไปที่จะต้องกำหนดจำนวนค่าที่อาร์เรย์ควรจัดเก็บก่อนที่คุณจะเริ่มเพิ่มค่าลงในอาร์เรย์นั้นได้
นั่นคือที่มาของ Java ArrayList เพื่อนผู้ช่วยเหลือของเรา
ในคู่มือนี้ เราจะพูดถึง ArrayLists คืออะไร ทำงานอย่างไร และเปรียบเทียบกับอาร์เรย์แบบดั้งเดิม เราจะอธิบายวิธีการที่สำคัญที่สุดที่คุณต้องรู้เพื่อให้ทำงานกับคลาส ArrayList ได้อย่างมีประสิทธิภาพ เริ่มกันเลย!
ArrayList คืออะไร
ArrayList เป็นรายการประเภทพิเศษที่ช่วยให้คุณสามารถสร้างอาร์เรย์ที่ปรับขนาดได้ คลาส ArrayList ใช้อินเทอร์เฟซ List ซึ่งใช้เพื่อจัดเก็บข้อมูลที่สั่งซื้อ
เมื่อคุณทำงานกับอาร์เรย์ใน Java คุณต้องประกาศขนาดของอาร์เรย์นั้นก่อนที่คุณจะสามารถเก็บค่าไว้ในอาร์เรย์นั้นได้ บ่อยครั้งเป็นกรณีที่คุณไม่ทราบว่าคุณต้องการเก็บค่ากี่ค่าในอาร์เรย์ก่อนที่คุณจะประกาศ ซึ่งทำให้เกิดปัญหา
คลาส ArrayList ให้คุณกำหนดอาร์เรย์ที่ไม่จำเป็นต้องบอกว่าสามารถเก็บค่าได้กี่ค่า ArrayLists ซึ่งบางครั้งเรียกว่า dynamic arrays
, สามารถเปลี่ยนความจุได้เมื่อคุณเพิ่มหรือลบองค์ประกอบ
วิธีการสร้าง ArrayList
มาเริ่มกันเลยดีกว่า:ประกาศ ArrayList การตั้งค่าหนึ่งรายการค่อนข้างแตกต่างกับวิธีประกาศอาร์เรย์ เนื่องจากใช้อินเทอร์เฟซ Java List
เปิดไฟล์ Java และวางโค้ดต่อไปนี้ลงในคลาสหลักของคุณ:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
import java.util.ArrayList; ArrayList<String> songs = new ArrayList<>();
เราเพิ่งสร้างรายการอาร์เรย์ชื่อ songs
. String
หมายถึงประเภทของข้อมูลที่จะเก็บไว้ในอาร์เรย์ของเราและ ArrayList หมายถึงประเภทของวัตถุที่เราต้องการสร้าง
เราต้องนำเข้า ArrayList ลงในโค้ดของเราเพราะมันมาจาก Java util
ห้องสมุด.
เป็นที่น่าสังเกตว่าคุณไม่สามารถสร้างรายการอาร์เรย์โดยใช้ประเภทข้อมูลดั้งเดิมได้ ตัวอย่างเช่น หากคุณต้องการประกาศอาร์เรย์ของจำนวนเต็ม คุณไม่สามารถใช้ int
ดั้งเดิมได้ พิมพ์; คุณต้องใช้คลาสจำนวนเต็ม
ขอให้สังเกตว่าเราไม่ต้องระบุจำนวนค่าที่ ArrayList ของเราต้องการจัดเก็บ นั่นเป็นเพราะ ArrayLists
เป็นไดนามิก
วิธีการเพิ่มองค์ประกอบใน ArrayList
วิธีการ add() ให้คุณเพิ่มองค์ประกอบเดียวในรายการของคุณ สมมติว่าเราต้องการเพิ่มเป็นสองเพลงใน songs
. ของเรา รายการอาร์เรย์:Love Me Do and Help! (ซึ่งเป็นของเดอะบีทเทิลส์ทั้งคู่)
เปิดไฟล์ Java ใหม่และเขียนโค้ดต่อไปนี้:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); System.out.println("Songs: " + songs); } }
รหัสของเราส่งคืน:เพลง:[Love Me Do, Help!]
เช่นเดียวกับอาร์เรย์ รายการใน ArrayList
จะได้รับหมายเลขดัชนีของตนเอง เนื่องจากรายการใน ArrayList มีการเรียงลำดับและตัวเลขบอกโปรแกรมของเราว่าแต่ละรายการในรายการของเราควรปรากฏขึ้น หากจำเป็น คุณสามารถระบุตำแหน่งดัชนีที่คุณต้องการเพิ่มรายการ:
songs.add(0, “Love Me Do”);
สิ่งนี้จะเพิ่มรายการ “Love Me Do” ที่ตำแหน่งดัชนี 0 ใน songs
. ของเรา รายการ
เริ่มต้น ArrayList
เมื่อคุณประกาศอาร์เรย์ คุณสามารถเริ่มต้นได้โดยตรงโดยการระบุค่าที่คุณต้องการกำหนดให้กับอาร์เรย์นั้น ArrayLists
ไม่ทำงานในลักษณะนี้ คุณต้องใช้วิธีพิเศษที่เรียกว่า asList() จากคลาส Arrays เพื่อเริ่มต้น ArrayList. asList()
ส่งคืนอาร์เรย์เป็นรายการที่คลาส ArrayList สามารถอ่านได้
คุณอาจต้องการเริ่มต้น ArrayList ด้วยค่าต่างๆ หากคุณมีค่าบางค่าที่คุณต้องการเพิ่มในรายการของคุณแล้ว
คุณสามารถใช้ for loop เพื่อเพิ่มแต่ละรายการทีละรายการ อย่างไรก็ตาม วิธีการนั้นซับซ้อนกว่าในการตั้งค่าและมีประสิทธิภาพน้อยกว่าการเริ่มต้นรายการด้วยค่าโดยใช้ asList()
.
เริ่มต้นด้วยการนำเข้าไลบรารีที่เราจะใช้ในโค้ดของเรา:
import java.util.ArrayList; import java.util.Arrays;
จากนั้นเราจะเขียนคลาสที่เริ่มต้นเพลงของเรา ArrayList ด้วยสองค่า:
class Main { public static void main(String[] args) { ArrayList<String> songs = new ArrayList(Arrays.asList("Love Me Do", "Help!")); System.out.println("Songs: " + songs); } }
ในโค้ดนี้ เราได้ประกาศ ArrayList
ที่สามารถเก็บค่าสตริงได้ เราใช้ asList() เพื่อสั่งให้โค้ดของเราเริ่มต้นรายการอาร์เรย์ของเราด้วยค่าเริ่มต้นสองค่า ซึ่งเป็นเพลงของ Beatles เดียวกันกับที่เราเพิ่มในตัวอย่างที่แล้ว
ดึงรายการจาก ArrayList
คลาส ArrayList มาพร้อมกับวิธีการที่เรียกว่า get()
ที่ให้คุณเข้าถึงองค์ประกอบของรายการอาร์เรย์ได้ หากต้องการใช้วิธีนี้ คุณต้องระบุตำแหน่งดัชนีขององค์ประกอบที่คุณต้องการเข้าถึง
พิจารณาตัวอย่างนี้:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); System.out.println("Second song: " + songs.get(1)); } }
ในโค้ดนี้ เราได้สร้างรายการอาร์เรย์และเพิ่มค่าสองค่า เราใช้ songs.get(1)
. แล้ว เพื่อดึงเพลงที่ตำแหน่งดัชนี 1 ในรายการของเรา รหัสของเราส่งคืน:
เพลงที่สอง:ช่วยด้วย!
อัปเดต ArrayList
การอัปเดตรายการอาร์เรย์ทำได้ง่ายเหมือนกับการเพิ่มองค์ประกอบลงในรายการ มีเมธอดในตัวที่เรียกว่า set()
ที่คุณสามารถใช้เพื่อเปลี่ยนค่าที่เก็บไว้ในรายการ พิจารณารหัสต่อไปนี้:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); System.out.println("Songs: " + songs); songs.set(1, "Come Together"); System.out.println("Songs: " + songs); } }
รหัสของเราส่งคืน:
เพลง:[รักฉันช่วยด้วย!]
เพลง:[Love Me Do, Come Together]
ในโค้ดของเรา เราได้เพิ่มค่าสองค่า - "Love Me Do" และ "Help!" - ในรายการของเรา จากนั้นเราได้เปลี่ยนรายการที่มีตำแหน่งดัชนี 1 เป็น "มารวมกัน" สิ่งนี้แทนที่ "ความช่วยเหลือ!" กับ “มาด้วยกัน” ในรายการของเรา เมื่อเราพิมพ์รายการของเราเมื่อสิ้นสุดโปรแกรม เราจะเห็นว่ามีการแก้ไข
ลบองค์ประกอบออกจาก ArrayList
องค์ประกอบไม่จำเป็นต้องอยู่ใน ArrayList ตลอดไป คุณสามารถลบองค์ประกอบโดยใช้ remove()
วิธีการได้ตลอดเวลา ช่างเป็นชื่อที่จำง่ายจริงๆ!
พิจารณาตัวอย่างนี้:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); System.out.println("Songs: " + songs); String removed = songs.remove(0); System.out.println("Songs: " + songs); System.out.println(removed); } }
ในตัวอย่างนี้ เราเพิ่มสองรายการในรายการอาร์เรย์ของเรา จากนั้นเราจะลบรายการที่มีตำแหน่งดัชนี 0 รหัสของเราส่งคืน:
เพลง:[รักฉันช่วยด้วย!]
เพลง:[ช่วยด้วย!]
รักฉันทำ
เราเพิ่งลบ Love Me Do
จากรายการอาร์เรย์ของเรา remove()
method ส่งคืนชื่อของรายการที่ถูกลบซึ่งเรากำหนดให้กับตัวแปร removed
. เราพิมพ์ค่าของตัวแปรนี้ไปยังคอนโซลเมื่อสิ้นสุดโปรแกรมของเรา
วนซ้ำผ่าน ArrayList
จะทำอย่างไรถ้าคุณต้องการวนซ้ำผ่าน ArrayList? คุณสามารถทำได้โดยใช้ for loop หรือ for-each loop ขึ้นอยู่กับความชอบของคุณ
สมมติว่าเราต้องการพิมพ์เพลงของ Beatles ทั้งหมดในรายการของเราไปที่คอนโซล โดยแต่ละค่าจะแสดงขึ้นในบรรทัดใหม่ เราสามารถทำได้โดยใช้รหัสต่อไปนี้:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); for (int i = 0; i < songs.size(); i++) { System.out.println(songs.get(i)); } } }
ในโปรแกรมนี้ เราใช้ for loop เพื่อวนซ้ำทุกรายการในรายการอาร์เรย์ของเรา สำหรับแต่ละรายการในรายการอาร์เรย์ เราจะพิมพ์ไปยังคอนโซลในบรรทัดของตัวเอง วนซ้ำนี้ดำเนินต่อไปจนกว่าทุกรายการในรายการของเราจะถูกพิมพ์ไปยังคอนโซล
สังเกตว่าเราได้ใช้วิธีที่เรียกว่า songs.size()
ในโปรแกรมนี้ size() วิธีการบอกเราว่าค่าที่เก็บไว้ในรายการอาร์เรย์ของเรามีกี่ค่า
รหัสของเราส่งคืน:
รักฉันทำ
ช่วย!
ในทำนองเดียวกัน คุณสามารถใช้ for-each loop เพื่อวนซ้ำผ่านรายการอาร์เรย์ นี่เป็นเพราะ for-each loops รองรับการวนซ้ำผ่านอ็อบเจกต์ iterable ใดๆ พิจารณาตัวอย่างต่อไปนี้:
import java.util.ArrayList; class Main { public static void main(String[] args) { ArrayList<String> songs = new ArrayList<>(); songs.add("Love Me Do"); songs.add("Help!"); for (String song : songs) { System.out.println(song); } } }
โปรแกรมนี้มีความคล้ายคลึงกันมากทั้งในด้านโครงสร้างและวัตถุประสงค์ มันพิมพ์ค่าทั้งหมดใน songs
. ของเรา รายการอาร์เรย์ไปยังคอนโซล ความแตกต่างคือเราใช้ for-each loop เพื่อวนซ้ำแต่ละค่า
คุณอาจเลือกใช้ for-each
วนซ้ำแทน for
วนซ้ำเพราะอ่าน for-each loop ได้ง่ายขึ้น แต่ทั้งสองวิธีทำงานได้อย่างมีประสิทธิภาพ
บทสรุป
คลาส Java ArrayList อนุญาตให้คุณกำหนดอาร์เรย์ซึ่งสามารถเก็บค่าได้หลายค่าโดยไม่บอกจำนวนค่าที่จะเก็บล่วงหน้า
เราเพิ่งขีดข่วนพื้นผิวของการใช้ ArrayLists ใน Java หากต้องการเรียนรู้เพิ่มเติม คุณอาจต้องการดูบทช่วยสอนต่อไปนี้:
- การแปลง ArrayList เป็น Array
- วิธีการเริ่มต้น ArrayList
- วิธีการจัดเรียง ArrayList
ตอนนี้คุณไม่ต้องกังวลกับสิ่งที่คุณจะทำอีกต่อไป หากคุณไม่ทราบว่าอาร์เรย์จะต้องจัดเก็บค่าจำนวนเท่าใด คุณจะสามารถใช้ ArrayList เพื่อแก้ปัญหานี้ได้!