โค้ดยิม/จาวาบล็อก/สุ่ม/วิธีเพิ่มองค์ประกอบใหม่ใน Array ใน Java
John Squirrels
ระดับ
San Francisco

วิธีเพิ่มองค์ประกอบใหม่ใน Array ใน Java

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

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 คุณจึงสามารถเลือกวิธีที่คุณพอใจได้

อ่านเพิ่มเติม:

ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ