Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ArrayList Java:คู่มือสำหรับผู้เริ่มต้นใช้งาน

คุณเบื่อที่ต้องประกาศขนาดของอาร์เรย์ก่อนจึงจะใช้งานได้หรือไม่? คุณไม่ใช่คนเดียว เนื่องจากไม่สะดวกเสมอไปที่จะต้องกำหนดจำนวนค่าที่อาร์เรย์ควรจัดเก็บก่อนที่คุณจะเริ่มเพิ่มค่าลงในอาร์เรย์นั้นได้

นั่นคือที่มาของ 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 เพื่อแก้ปัญหานี้ได้!