โอ้ Java อาร์เรย์ พวกเขาเป็นเป้าหมายของความรักและความเกลียดชังที่รุนแรงของนักพัฒนาซอฟต์แวร์มือใหม่หลายร้อยคน การเพิ่มองค์ประกอบในอาร์เรย์ที่เริ่มต้นไว้แล้วนั้นเป็นไปไม่ได้ พวกเขากล่าวว่า... จริงๆ แล้วเป็นไปได้ แต่ไม่ใช่ในความหมายแบบคลาสสิก... และไม่สะดวกอย่างยิ่ง การเพิ่มองค์ประกอบใหม่ให้กับอาร์เรย์ที่เริ่มต้นไว้แล้วถือเป็นกลอุบายอย่างหนึ่ง อย่างไรก็ตาม เทคนิคเหล่านี้อาจมีประโยชน์ในการสัมภาษณ์ ... และบางครั้งในงานของโปรแกรมเมอร์ เพื่อให้แน่ใจว่าคุณสนุกกับการใช้ประเภทข้อมูลและรู้วิธีการใช้อย่างมีประสิทธิภาพ เราจึงเขียนคำแนะนำเกี่ยวกับการเพิ่มองค์ประกอบใหม่ให้กับอาร์เรย์ Java นอกเหนือจากการดูตัวอย่างทฤษฎีและโค้ดอย่างถี่ถ้วนแล้ว อย่าลืมตรวจสอบและทำโจทย์แบบฝึกหัดในโพสต์ให้ครบถ้วน

Array ใน Java คืออะไร
มาดูกันว่า Array คืออะไรและจะสร้างได้อย่างไรใน Java หากคุณจำได้ โปรดข้ามไปยังหัวข้อย่อยถัดไป "5 วิธีในการเพิ่มองค์ประกอบใหม่ไปยังอาร์เรย์ Java" เอกสาร Java อย่างเป็นทางการของ Oracle กล่าวว่าอาร์เรย์เป็นชุดของค่าที่อยู่ในประเภทข้อมูลเดียวกัน ชุดของจำนวนเต็มเป็นตัวอย่างที่สมบูรณ์แบบของอาร์เรย์ใน Java ค่าทั้งหมดที่คุณกำหนดมีตำแหน่งเฉพาะภายในอาร์เรย์ที่เรียกว่าดัชนี ต่อไปนี้เป็นวิธีการประกาศและเริ่มต้นอาร์เรย์:
int[] myArray = new int[10];
int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10}
ในกรณีแรก เรากำหนดอาร์เรย์myArrayและทำให้ Java จัดสรรพื้นที่สำหรับอาร์เรย์ 10 อิลิเมนต์ ในmyArray1 ที่สอง เราป้อนค่า 10 ค่าลงในทันที ในทั้งสองกรณี ไม่สามารถพุชองค์ประกอบ 11 เข้าไปในอาร์เรย์ได้ ในการดำเนินการกับอาร์เรย์ นักพัฒนาจะจัดการดัชนีของค่าที่อาร์เรย์มีอยู่ เราควรทำอย่างไร? มาดูวิธีทั่วไปในการเพิ่มอาร์เรย์กัน
5 วิธีในการเพิ่มองค์ประกอบใหม่ให้กับอาร์เรย์ Java
นี่คือเคล็ดลับของเราในการทำให้สิ่งที่ไม่เปลี่ยนรูปดูเหมือนไม่เปลี่ยนรูป- แปลงอาร์เรย์เป็นรายการ
- สร้างอาร์เรย์ใหม่ที่มีความจุมากขึ้นและเพิ่มองค์ประกอบใหม่ลงในอาร์เรย์
- การใช้งานSystem.arraycopy()
- การคัดลอกอาร์เรย์โดยใช้ Apache Commons
- การใช้เมธอดArrayCopyOf()
1. การแปลงอาร์เรย์เป็นรายการ
เนื่องจากเราไม่สามารถเพิ่มองค์ประกอบใหม่ลงในอาร์เรย์ได้โดยตรง สิ่งที่ดีที่สุดถัดไปที่ต้องทำคือแปลงเป็นรายการ เพิ่มองค์ประกอบใหม่ และแปลงค่ากลับไปเป็นอาร์เรย์ วิธีแรกในการแปลงอาร์เรย์เป็นรายการคือการใช้asList()เพื่อสร้าง ArrayList ใหม่ เมื่อแปลงช่วงของค่าสำเร็จแล้ว ให้ใช้ListAdd()เพื่อแทรกค่า เมื่อคุณไม่จำเป็นต้องแก้ไขอาร์เรย์อีกต่อไป ให้แปลงกลับเป็นประเภทข้อมูลดั้งเดิมโดยใช้เมธอดtoArray () ด้วยวิธีการและการแปลงทั้งหมด สิ่งนี้อาจดูสับสนในตอนแรก มาดูตัวอย่างการใช้asList()เพื่อเคลียร์สิ่งต่างๆ กัน
// Code for adding Java arrays to a program
import java.lang.*;
import java.util.*;
class ArrayDemo{
//Let’s add a new element to an array
public static Integer[] addX(Integer myArray[], int x) {
int i;
//turn array into ArrayList using asList() method
List arrList = new ArrayList( Arrays.asList(myArray));
// adding a new element to the array
arrList.add(x);
// Transforming the ArrayList into an array
myArray = arrList.toArray(myArray);
return myArray;
}
public static void main(String[] args) {
int i;
//initial array
Integer myArray[] = { 0, 1, 2, 45, 7, 5, 17};
//print the initial array out
System.out.println("Initial Array: "
+ Arrays.toString(myArray));
//element to be added
int x = 28;
// call the method to add x in myArray
myArray = addX(myArray, x);
// print the updated array out
System.out.println("Array with " + x + " added: "
+ Arrays.toString(myArray));
}
}
ผลลัพธ์คือ:
อาร์เรย์เริ่มต้น: [0, 1, 2, 45, 7, 5, 17] อาร์เรย์ที่เพิ่ม 28: [0, 1, 2, 45, 7, 5, 17, 28]
ดังนั้นในโปรแกรมเราจึงสร้างอาร์เรย์myArrayจำนวน 7 ค่าได้สำเร็จ กรอกและพิมพ์ออกมา จากนั้นเราตัดสินใจว่าค่านิยมสิบประการไม่เพียงพอสำหรับเรา เราแปลง myArray เป็น ArrayList arrList โดยใช้วิธีArrays.asList นี่คือ 28 องค์ประกอบที่จะเพิ่ม เราเพิ่มลงใน ArrayList arrListแล้วแปลงกลับเป็นอาร์เรย์โดยใช้ เมธอด toArray()และพิมพ์อาร์เรย์ใหม่ออกมา
2. สร้างอาร์เรย์ใหม่ที่มีความจุมากขึ้น
หนึ่งในวิธีทั่วไปในการเพิ่มองค์ประกอบในอาร์เรย์คือการสร้างอาร์เรย์ใหม่ที่มีขนาดใหญ่ขึ้นตั้งแต่ต้น ใส่องค์ประกอบของเก่าและเพิ่มองค์ประกอบใหม่ นี่คือคำแนะนำทีละขั้นตอนของกระบวนการ:- สร้างอาร์เรย์ใหม่ที่มีความจุ a+n (a คือความจุของอาร์เรย์เดิม, n คือจำนวนองค์ประกอบที่คุณต้องการเพิ่ม)
- เพิ่มองค์ประกอบทั้งหมดของช่วงข้อมูลก่อนหน้าไปยังองค์ประกอบใหม่ เช่นเดียวกับค่าใหม่
- พิมพ์อาร์เรย์ผลลัพธ์
// Java Program to add an element in an Array
import java.lang.*;
import java.util.*;
class ArrayDemo {
//Method to add an element x into array myArray
public static int[] addX(int myArray[], int x) {
int i;
// create a new array of a bigger size (+ one element)
int newArray[] = new int[myArray.length + 1];
// insert the elements from the old array into the new one
for (i = 0; i < myArray.length; i++)
newArray[i] = myArray[i];
newArray[myArray.length] = x;
return newArray;
}
public static void main(String[] args) {
int i;
// initial array of size 10
int arr[]
= {0, 1, 2, 45, 7, 5, 17};
// print the initial array
System.out.println("Initial Array: " + Arrays.toString(arr));
// element to be added
int x = 28;
// call the addX method to add x in arr
arr = addX(arr, x);
// print the updated array
System.out.println("Array with " + x + " added:" + Arrays.toString(arr));
}
}
ผลลัพธ์คือ:
อาร์เรย์เริ่มต้น: [0, 1, 2, 45, 7, 5, 17] อาร์เรย์ที่เพิ่ม 28:[0, 1, 2, 45, 7, 5, 17, 28]
วิธีนี้ในการเพิ่มองค์ประกอบใหม่ในอาร์เรย์เป็นวิธีที่ง่ายที่สุด
3. การใช้ System.arrayCopy()
System.arrayCopy()เป็นวิธีที่ใช้กันอย่างแพร่หลายในการจัดสรรอาร์เรย์ขนาดใหญ่ที่ปลายทางของอาร์เรย์ต้นทาง นักพัฒนาสามารถระบุลำดับที่ต้องการคัดลอกไปยังอาร์เรย์ใหม่ในวงเล็บของเมธอด หากต้องการดูวิธีการทำงานและลองใช้ด้วยตัวคุณเอง โปรดดูและลองเรียกใช้ตัวอย่างด้านล่าง:
import java.util.Arrays;
class ArrayDemo {
private static Integer[] addElement(Integer[] myArray, int newElement) {
//we create a new Object here, an array of bigger capacity
Integer[] array = new Integer[myArray.length + 1];
System.arraycopy(myArray, 0, array, 0, myArray.length);
array[myArray.length] = newElement;
return array;
}
public static void main(String[] args) {
Integer[] myArray = {20, 21, 3, 4, 5, 88};
System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
myArray = addElement(myArray, 12);
System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
}
}
ผลลัพธ์คือ:
myArray ก่อนเพิ่มองค์ประกอบใหม่: [20, 21, 3, 4, 5, 88] myArray ก่อนเพิ่มองค์ประกอบใหม่: [20, 21, 3, 4, 5, 88, 12]
ที่นี่ เราได้สร้างอาร์เรย์myArrayพิมพ์และเพิ่มองค์ประกอบใหม่โดยใช้เมธอดaddElementซึ่งสร้างขึ้นบนSystem.arrayCopy()
4. การใช้ Apache Commons เพื่อคัดลอกอาร์เรย์
มาใช้วิธีที่ไม่ได้มาตรฐานกันเถอะ กล่าวคือ ไลบรารีของบุคคลที่สาม Apache Commons lang เป็นส่วนหนึ่งของโครงการ Apache Commons ที่มุ่งเน้นในทุกแง่มุมของส่วนประกอบ Java ที่สามารถใช้ซ้ำได้ ความรู้เกี่ยวกับโครงการจะไม่ฟุ่มเฟือย Apache Commons lang มีเมธอดadd()ที่ออกแบบมาโดยเฉพาะเพื่อให้สามารถขยายอาร์เรย์ได้ ช่วยประหยัดเวลาและความพยายามให้กับผู้เขียนโค้ดได้มาก คุณควรระลึกไว้เสมอว่าเมธอดadd() ของ Apache Commons นี้ ใช้การเรียกเมธอดSystem.arraycopy()ในกรณีที่คุณต้องตอบคำถามข้อสอบหรือคำถามสัมภาษณ์ที่ยุ่งยาก หากต้องการเพิ่มไลบรารีในโครงการของคุณ ให้ไปที่ เว็บไซต์ Apache Commonsและดาวน์โหลดไลบรารี จากนั้นไปที่ File → Project Structure → Libraries > + แล้วเลือกไฟล์ jar ที่ดาวน์โหลดมา
import org.apache.commons.lang3.ArrayUtils;
import java.util.Arrays;
class ArrayDemo {
private static <T> T[] append(T[] arr, T element) {
return ArrayUtils.add(arr, element);
}
public static void main(String[] args) {
Integer[] myArray = { 0, 1, 2, 3, 4};
System.out.println("myArray: " + Arrays.toString(myArray));
myArray = append(myArray, 5);
System.out.println("new Array with the number added: " + Arrays.toString(myArray));
}
}
ผลลัพธ์คือ:
myArray: [0, 1, 2, 3, 4] Array ใหม่พร้อมตัวเลขที่เพิ่ม: [0, 1, 2, 3, 4, 5]
5. การใช้งาน ArrayCopyOf()
ArrayCopyOf()เป็นอีกวิธีหนึ่งในการเพิ่มองค์ประกอบใหม่ให้กับอาร์เรย์ เช่น Apache Commons lang add()จะเรียกใช้System.arraycopy() เป็นการภายใน สำหรับการดำเนินการนี้ อย่างไรก็ตาม นักพัฒนาส่วนใหญ่ชอบArrayCopyOf()เนื่องจากช่วยให้โค้ดกระชับและสามารถอ่านได้ นี่คือตัวอย่างการใช้ArrayCopyOf()เพื่อเพิ่มองค์ประกอบใหม่ให้กับอาร์เรย์:
import java.util.Arrays;
class ArrayDemo {
private static <X> X[] addElement(X[] myArray, X element) {
X[] array = Arrays.copyOf(myArray, myArray.length + 1);
array[myArray.length] = element;
return array;
}
public static void main(String[] args) {
Integer[] myArray = {20, 21, 3, 4, 5, 88};
System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
myArray = addElement(myArray, 12);
System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
}
}
ผลลัพธ์คือ:
myArray ก่อนเพิ่มองค์ประกอบใหม่: [20, 21, 3, 4, 5, 88] myArray ก่อนเพิ่มองค์ประกอบใหม่: [20, 21, 3, 4, 5, 88, 12]
บทสรุป
การรู้วิธีเพิ่มองค์ประกอบในอาร์เรย์ช่วยให้นักพัฒนาอัปเดตโค้ดเก่าได้อย่างรวดเร็วโดยไม่ต้องสูญเสียฟังก์ชันการทำงานและความสามารถในการอ่าน... หรือเพียงเพื่อให้ผ่านการสัมภาษณ์ เนื่องจากมีหลายวิธีในการเพิ่มองค์ประกอบในอาร์เรย์ Java คุณจึงสามารถเลือกวิธีที่คุณพอใจได้
อ่านเพิ่มเติม: |
---|
GO TO FULL VERSION