หากคุณต้องการเพิ่มอิลิเมนต์ทั้งหมดของArrayList()คอลเลกชันหนึ่ง คุณสามารถใช้เมธอดaddAll() ของ คลาสJava ArrayList ในบทความนี้ ฉันจะอธิบายวิธีการทำงานของวิธีนี้และให้ตัวอย่างโค้ดบางส่วน
ลายเซ็นเมธอด ArrayList addAll()
วิธีการjava.util.ArrayList.addAllมีสองรูปแบบ พวกเขาอยู่ที่นี่
boolean addAll(Collection<? extends E> c)
เมธอดนี้คืนค่าจริงหากรายการมีการเปลี่ยนแปลงอันเป็นผลมาจากการเรียก แต่ที่สำคัญที่สุด วิธีเพิ่มองค์ประกอบทั้งหมดของคอลเล็กชันที่ระบุในส่วนท้ายของรายการนี้ ตามลำดับที่ส่งคืนโดย Iterator ของคอลเล็กชันที่ระบุ Element c คือรายการที่จะเพิ่มในArrayList ของคุณ นอกจากนี้เมธอดจะพ่นNullPointerExceptionหากคอลเล็กชันที่ระบุเป็นโมฆะ
boolean addAll(int index, Collection<? extends E> c)
วิธีนี้จะแทรกองค์ประกอบทั้งหมดในคอลเล็กชันที่ระบุcลงในรายการนี้ โดยเริ่มต้นที่ดัชนีตำแหน่งที่ระบุ
ตัวอย่างไวยากรณ์ ArrayList addAll()
นี่คือลักษณะของการเรียกไปยังArrayList addAll()วิธีการดูเหมือนในโปรแกรม Java:
myList.addAll(myNewList))
โดยที่myListคือArrayList ดั้งเดิม และmyNewListคือรายการ ค่าทั้งหมดจะถูกเพิ่มไปยังmyListหากมีอยู่
myList.addAll(2, myNewList))
ตัวแปรของArrayList addAll()วิธีการที่มีสองพารามิเตอร์ องค์ประกอบทั้งหมดจากmyNewListจะถูกเพิ่มไปยังmyListและองค์ประกอบแรกmyNewList[0]จะกลายเป็นmyList[2] , myNewList[1]ตอนนี้คือmyList[3]และอื่นๆ องค์ประกอบจากรายการดั้งเดิม เริ่มจาก หมายเลข 2 จะถูกยกไปที่ส่วนท้ายของรายการคอมโบใหม่
ตัวอย่างโค้ด ArrayList addAll()
ตอนนี้ได้เวลาสำหรับตัวอย่างโค้ดแล้ว มาสร้างรายชื่อเพื่อนของเรา และเรียกมันว่า 'เพื่อน' และเพิ่มชื่อของพวกเขาที่นั่น สมมติว่าเราเริ่มเข้ามหาวิทยาลัยและได้เพื่อนใหม่สองสามคนในคราวเดียว เป็นช่วงเวลาที่ดีในการสร้างรายชื่อเพื่อนใหม่สำหรับพวกเขา เวลาผ่านไป คุณแน่ใจว่าเพื่อนใหม่ของคุณมีอยู่จริงเพียงครั้งเดียว คุณจึงตัดสินใจย้ายพวกเขาไปยังรายชื่อเพื่อนหลัก คุณสามารถทำได้โดยใช้เมธอดaddAll() ในโปรแกรม เราจะพิมพ์รายชื่อเพื่อนเริ่มต้น รายชื่อเพื่อนใหม่ รายชื่อเพื่อนที่อัปเดต ตลอดจนค่าบูลีนที่ส่งกลับโดยเมธอด addAll() ไปยังคอนโซล โดยจะคืนค่าจริงหากรายการเดิมมีการเปลี่ยนแปลงเนื่องจากการทำงานของเมธอด และคืนค่าเป็นเท็จหากไม่เกิดขึ้น
import java.util.ArrayList;
import java.util.List;
public class AddAllDemo {
public static void main(String[] args) {
List<String> friends = new ArrayList<>();
friends.add("Johnny");
friends.add("Ivy");
friends.add("Rick");
System.out.println(friends);
List<String> newFriends = new ArrayList<>();
newFriends.add("Andrew");
newFriends.add("Alex");
newFriends.add("Neil");
System.out.println(newFriends);
//let's print out the value addAll() method returns
//here it's true because list friends was changed
System.out.println(friends.addAll(newFriends));
System.out.println("My new list with new friends added: ");
System.out.println(friends);
}
}
ผลลัพธ์คือ:
[Johnny, Ivy, Rick] [Andrew, Alex, Neil] true รายการใหม่ของฉันกับเพื่อนใหม่ที่เพิ่มเข้ามา: [Johnny, Andrew, Alex, Neil, Ivy, Rick]
หากเราดำเนินการเดียวกันแต่พยายามเพิ่มรายชื่อเพื่อนที่ว่างเปล่า วิธีนี้จะได้ผล แต่จะคืนค่าเป็นเท็จ ไม่จริง เนื่องจากรายชื่อเดิมไม่ได้เปลี่ยนแปลง
import java.util.ArrayList;
import java.util.List;
public class AddAllDemo3 {
public static void main(String[] args) {
List<String> friends = new ArrayList<>();
friends.add("Johnny");
friends.add("Ivy");
friends.add("Rick");
System.out.println(friends);
List<String> newFriends = new ArrayList<>();
System.out.println(newFriends);
System.out.println(friends.addAll(newFriends));
System.out.println("My new list with new friends added: ");
System.out.println(friends);
}
}
ผลลัพธ์คือ:
[Johnny, Ivy, Rick] [] false รายการใหม่ของฉันกับเพื่อนใหม่ที่เพิ่มเข้ามา: [Johnny, Ivy, Rick]
ทีนี้ลองใช้ วิธี addAll()ที่มีพารามิเตอร์สองตัว
boolean addAll(int index, Collection<? extends E> c)
มาเพิ่มเพื่อนใหม่ในรายการกันอีกครั้ง ไม่ใช่ท้ายๆ แต่อยู่ตรงกลาง สมมุติว่าตามหลังจอห์นนี่ ซึ่งในกรณีของเราคือองค์ประกอบที่มีเลขศูนย์
import java.util.ArrayList;
import java.util.List;
public class AddAllDemo2 {
public static void main(String[] args) {
List<String> friends = new ArrayList<>();
friends.add("Johnny");
friends.add("Ivy");
friends.add("Rick");
System.out.println(friends);
List<String> newFriends = new ArrayList<>();
newFriends.add("Andrew");
newFriends.add("Alex");
newFriends.add("Neil");
System.out.println(newFriends);
System.out.println(friends.addAll(1, newFriends));
System.out.println("My new list with new friends added: ");
System.out.println(friends);
}
}
ผลที่คาดว่าจะได้รับจากผลงานของรายการ: ตอนนี้แอนดรูว์เป็นที่ 1 ของรายการรวม อเล็กซ์ - 2, นีล - 3 และไอวี่ซึ่งเคยเป็นอันดับ 1 ก่อนหน้านี้ได้ย้ายไปอยู่ในอันดับที่ 4
[Johnny, Ivy, Rick] [Andrew, Alex, Neil] true รายการใหม่ของฉันกับเพื่อนใหม่ที่เพิ่มเข้ามา: [Johnny, Andrew, Alex, Neil, Ivy, Rick]
GO TO FULL VERSION