CodeGym /وبلاگ جاوا /Random-FA /نحوه اضافه کردن یک عنصر جدید به آرایه در جاوا
John Squirrels
مرحله
San Francisco

نحوه اضافه کردن یک عنصر جدید به آرایه در جاوا

در گروه منتشر شد
اوه، آرایه های جاوا. آنها مورد عشق و نفرت شدید صدها توسعه دهنده نرم افزار مبتدی هستند. آنها گفتند که افزودن عناصر به آرایه ای که قبلاً مقداردهی اولیه شده است غیرممکن است... در واقع ممکن است، اما نه به معنای کلاسیک... و خیلی راحت نیست. افزودن عناصر جدید به آرایه ای که قبلاً مقداردهی اولیه شده است نوعی ترفند است. با این حال، این ترفندها می توانند در مصاحبه ... و گاهی اوقات در شغل برنامه نویس مفید باشند. برای اطمینان از اینکه از استفاده از نوع داده لذت می برید و می دانید که چگونه آن را به طور موثر انجام دهید، راهنمای اضافه کردن یک عنصر جدید به آرایه جاوا را نوشتیم. به غیر از بررسی دقیق نمونه‌های تئوری و کد، حتماً مشکلات تمرینی ارائه شده در پست را بررسی و تکمیل کنید. نحوه اضافه کردن یک عنصر جدید به آرایه در جاوا - 1

آرایه در جاوا چیست؟

بیایید به یاد بیاوریم که آرایه چیست و چگونه آن را در جاوا ایجاد کنیم. اگر این را به خاطر دارید، به راحتی به زیر عنوان بعدی «5 راه برای افزودن عناصر جدید به آرایه های جاوا» بروید. اسناد رسمی جاوا اوراکل می گوید که آرایه ها مجموعه ای از مقادیر متعلق به یک نوع داده هستند. مجموعه ای از اعداد صحیح نمونه کاملی از آرایه در جاوا است . تمام مقادیری که تعریف می کنید دارای یک موقعیت خاص در آرایه هستند که شاخص نامیده می شود . در اینجا روش هایی برای اعلام و مقداردهی اولیه آرایه ها وجود دارد:
int[] myArray = new int[10];
int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10}
در حالت اول یک آرایه myArray تعریف کردیم و جاوا را ساختیم تا برای یک آرایه 10 عنصری فضا اختصاص دهد، در دومین myArray1 بلافاصله 10 مقدار را در آن وارد کردیم. در هر صورت، عنصر 11 را نمی توان به سادگی به آرایه فشار داد. برای انجام عملیات با آرایه ها، توسعه دهندگان شاخص های مقادیر یک آرایه را دستکاری می کنند. چه کار باید بکنیم؟ بیایید نگاهی به رایج ترین روش های اضافه کردن به آرایه بیندازیم.

5 روش برای افزودن عناصر جدید به آرایه های جاوا

خوب، در اینجا ترفندهای ما برای تغییر ناپذیر به نظر می رسد.
  • یک آرایه را به لیست تبدیل کنید
  • یک آرایه جدید با ظرفیت بیشتر ایجاد کنید و یک عنصر جدید به آرایه اضافه کنید
  • پیاده سازی 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 را با استفاده از متد Arrays.asList به ArrayList arrList تبدیل کردیم . در اینجا 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 است که بر تمام جنبه های اجزای جاوا قابل استفاده مجدد متمرکز شده است. دانش در مورد پروژه اضافی نخواهد بود. زبان Apache Commons دارای یک متد 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] آرایه جدید با عدد اضافه شده: [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]

نتیجه

دانستن نحوه افزودن عناصر به یک آرایه به توسعه دهندگان کمک می کند تا کد قدیمی را به سرعت به روز کنند بدون اینکه عملکرد و خوانایی آن را به خطر بیندازند... یا فقط برای عبور از مصاحبه. از آنجایی که روش‌های مختلفی برای افزودن عناصر به آرایه‌های جاوا وجود دارد، با خیال راحت روشی را که با آن راحت هستید انتخاب کنید.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION