"

حذف یک عنصر از آرایه در جاوا,حذف عنصر با ایجاد آرایه جدید,حذف  یک عنصر بر اساس اندیس (موقعیت) در جاوا

حذف یک عنصر از آرایه در جاوا

ساده‌ترین روش حذف یک عنصر از آرایه در جاوا تبدیل به ArrayList، استفاده از متد ()remove، سپس تبدیل مجدد به آرایه.

تیم تحریریه
8
0
22 اردیبهشت 1405
لینک کوتاه

حذف یک عنصر از آرایه در جاوا

در جاوا، آرایه‌ها طول ثابتی دارند. این یعنی بر خلاف ArrayList، نمی‌توانید مستقیماً یک عنصر را از وسط آرایه حذف کنید تا اندازه آن کاهش یابد.
اما راه‌های مختلفی وجود دارد که می‌توانید حذف عنصر از آرایه در جاوا را شبیه‌سازی کنید.

آیا می‌توان مستقیماً از آرایه در جاوا عنصر حذف کرد؟

پاسخ کوتاه: خیر.
آرایه در جاوا یک ساختار داده با طول ثابت است.
وقتی آرایه ساخته می‌شود، اندازه آن تغییر نمی‌کند.
بنابراین عملیاتی مانند remove یا delete برای آرایه تعریف نشده است.
اما می‌توانید با روش‌های زیر، عنصر مورد نظر را حذف کرده و نتیجه را در یک آرایه جدید ذخیره کنید یا مقدار آن را به‌گونه‌ای تغییر دهید که انگار حذف شده است.








حذف یک عنصر از آرایه در جاوا



روش اول: حذف عنصر با ایجاد آرایه جدید (معمولی‌ترین روش)

در این روش، یک آرایه جدید با اندازه length-1 می‌سازیم و همه عناصر به جز عنصر مورد نظر را به آن منتقل می‌کنیم.


public class RemoveElementFromArray {
    public static void main(String[] args) {
        int[] originalArray = {10, 20, 30, 40, 50};
        int elementToRemove = 30; // عنصری که می‌خواهیم حذف کنیم
        
        int[] newArray = removeElement(originalArray, elementToRemove);
        
        System.out.print("آرایه اصلی: ");
        for (int num : originalArray) {
            System.out.print(num + " ");
        }
        
        System.out.print("\nآرایه بعد از حذف " + elementToRemove + ": ");
        for (int num : newArray) {
            System.out.print(num + " ");
        }
    }
    
    public static int[] removeElement(int[] arr, int element) {
        // ابتدا شمارش می‌کنیم چند عنصر غیر از عنصر مورد نظر وجود دارد
        int count = 0;
        for (int num : arr) {
            if (num != element) {
                count++;
            }
        }
        
        // آرایه جدید با اندازه مناسب
        int[] result = new int[count];
        int index = 0;
        for (int num : arr) {
            if (num != element) {
                result[index++] = num;
            }
        }
        return result;
    }
}

خروجی:


آرایه اصلی: 10 20 30 40 50 
آرایه بعد از حذف 30: 10 20 40 50

حذف  یک عنصر بر اساس اندیس (موقعیت) در جاوا

گاهی نیاز دارید عنصر را بر اساس اندیس حذف کنید، نه مقدار:


public static int[] removeElementByIndex(int[] arr, int index) {
    if (index < 0 || index >= arr.length) {
        System.out.println("اندیس نامعتبر است");
        return arr;
    }
    
    int[] result = new int[arr.length - 1];
    for (int i = 0, j = 0; i < arr.length; i++) {
        if (i != index) {
            result[j++] = arr[i];
        }
    }
    return result;
}




🚀 از صفر تا قهرمان جاوا، فقط با یک دوره!
به دنبال یه فرصت طلایی برای شروع برنامه‌نویسی می‌گردی؟
دوره آموزشی جاوا ما، همون چیزیه که نیاز داری!

✨ چرا این دوره رو انتخاب می‌کنی؟
🎯 از مبتدی تا حرفه‌ای
بدون پیش‌زمینه شروع می‌کنی و به یه برنامه‌نویس جاوا تبدیل می‌شی که بازار کار منتظرته!

🛠 پروژه‌محور و عملی
با انجام پروژه‌های واقعی، کدنویسی رو یاد می‌گیری، نه فقط تئوری!

👨‍🏫 پشتیبانی همیشگی
هرجا گیر کنی، تیم پشتیبانی کنارته تا مشکلت حل بشه.

🔓 دسترسی مادام‌العمر
هر وقت خواستی به محتوا دسترسی داری، برای همیشه!

 

🔥 همین حالا ثبت‌نام کن 





روش دوم: حذف عنصر با استفاده از ArrayList در جاوا (ساده‌ترین روش)

بهترین و ساده‌ترین روش حذف عنصر از آرایه این است که ابتدا آرایه را به ArrayList تبدیل کنید، از متد ()remove استفاده کنید، سپس دوباره به آرایه برگردانید.


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class RemoveWithArrayList {
    public static void main(String[] args) {
        Integer[] array = {5, 10, 15, 20, 25};
        
        System.out.println("آرایه اصلی: " + Arrays.toString(array));
        
        // مرحله 1: تبدیل آرایه به ArrayList
        List<Integer> list = new ArrayList<>(Arrays.asList(array));
        
        // مرحله 2: حذف عنصر (با مقدار یا اندیس)
        list.remove(Integer.valueOf(15));  // حذف با مقدار
        // یا list.remove(2);  // حذف با اندیس
        
        // مرحله 3: تبدیل مجدد به آرایه
        Integer[] newArray = list.toArray(new Integer[0]);
        
        System.out.println("آرایه بعد از حذف 15: " + Arrays.toString(newArray));
    }
}

خروجی:

آرایه اصلی: [5, 10, 15, 20, 25]
آرایه بعد از حذف 15: [5, 10, 20, 25]


مزایای روش حذف با  ArrayList در جاوا

  • کد بسیار ساده و خوانا

  • امکان حذف با مقدار یا اندیس

  • قابلیت حذف تمام تکرارهای یک مقدار


مزایای روش حذف با  ArrayList در جاوا




معایب
روش حذف با  ArrayList در جاوا

  • فقط برای آرایه‌های غیراولیه (مانند []Integer[]، String) کار می‌کند

  • برای int[] باید ابتدا تبدیل کنید

روش سوم: حذف عنصر از آرایه اولیه ([]int) با جابه‌جایی

اگر به دلایل عملکردی نمی‌خواهید آرایه جدید بسازید، می‌توانید عنصر را با مقدار خاصی (مثلاً صفر) علامت‌گذاری کنید و اندازه منطقی را جداگانه نگه دارید.


public class RemoveWithShift {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        int removeIndex = 2; // حذف عنصر با اندیس 2 (عدد 3)
        
        int newSize = removeAndShift(arr, removeIndex);
        
        System.out.print("آرایه بعد از حذف (نادیده گرفتن عناصر آخر): ");
        for (int i = 0; i < newSize; i++) {
            System.out.print(arr[i] + " ");
        }
    }
    
    public static int removeAndShift(int[] arr, int index) {
        if (index < 0 || index >= arr.length) {
            return arr.length;
        }
        // جابه‌جایی عناصر به سمت چپ
        for (int i = index; i < arr.length - 1; i++) {
            arr[i] = arr[i + 1];
        }
        // طول منطقی جدید
        return arr.length - 1;
    }
}

خروجی:


آرایه بعد از حذف (نادیده گرفتن عناصر آخر): 1 2 4 5

روش چهارم: حذف اولین یا آخرین عنصر آرایه

این دو حالت خاص ساده‌تر از بقیه هستند.

  • حذف اولین عنصر

int[] arr = {100, 200, 300, 400};
int[] newArr = Arrays.copyOfRange(arr, 1, arr.length);
// newArr = [200, 300, 400]

  • حذف آخرین عنصر


int[] arr = {100, 200, 300, 400};
int[] newArr = Arrays.copyOf(arr, arr.length - 1);
// newArr = [100, 200, 300]

تفاوت حذف در Array و ArrayList 

ویژگی آرایه (Array)  ArrayList
طول ثابت بله  خیر (پویا)
متد ()remove ندارد دارد (remove(index) یا remove(Object))
کارایی حذف از وسط  نیاز به کپی کل آرایه (O(n))  جابه‌جایی عناصر (O(n))
استفاده از حافظه کمتر کمی بیشتر (به دلیل ظرفیت اضافی)
مناسب برای داده‌های با اندازه ثابت داده‌های با حذف و اضافه مکرر


  
نکته مهم: در هر دو حالت، حذف یک عنصر از وسط باعث جابه‌جایی عناصر بعدی می‌شود و پیچیدگی زمانی O(n) دارد.

حذف تمام تکرارهای یک مقدار از آرایه

اگر مقدار تکراری در آرایه دارید و می‌خواهید همه آن‌ها را حذف کنید:

import java.util.Arrays;

public class RemoveAllDuplicates {
    public static void main(String[] args) {
        int[] arr = {3, 7, 3, 9, 3, 2};
        int valueToRemove = 3;
        
        int[] result = removeAllOccurrences(arr, valueToRemove);
        
        System.out.println("آرایه اصلی: " + Arrays.toString(arr));
        System.out.println("بعد از حذف همه " + valueToRemove + ": " + Arrays.toString(result));
    }
    
    public static int[] removeAllOccurrences(int[] arr, int value) {
        // شمارش عناصری که حذف نمی‌شوند
        int count = 0;
        for (int num : arr) {
            if (num != value) {
                count++;
            }
        }
        
        int[] result = new int[count];
        int index = 0;
        for (int num : arr) {
            if (num != value) {
                result[index++] = num;
            }
        }
        return result;
    }
}

خروجی:
آرایه اصلی: [3, 7, 3, 9, 3, 2]
بعد از حذف همه 3: [7, 9, 2]


حذف عنصر از آرایه رشته‌ای (String[])

روش کار دقیقاً مثل []Integer است:

String[] names = {"Ali", "Reza", "Sara", "Mina"};
String removeName = "Reza";

List<String> list = new ArrayList<>(Arrays.asList(names));
list.remove(removeName);
String[] newNames = list.toArray(new String[0]);

System.out.println(Arrays.toString(newNames)); // [Ali, Sara, Mina]


مقایسه عملکرد (Performance) در جاوا

  • روش ایجاد آرایه جدید

    ساده و امن، ولی حافظه اضافی مصرف می‌کند.
  • روش جابه‌جایی درجا

    حافظه کمتر، ولی طول آرایه تغییر نمی‌کند.
  • روش ArrayList

    خوانایی بالا، مناسب برای آرایه‌های غیراولیه.
برای آرایه‌های کوچک (کمتر از ۱۰۰۰ عنصر)، تفاوت محسوس نیست.
برای آرایه‌های خیلی بزرگ، روش اول و دوم سرعت مشابهی دارند (O(n)).




مقایسه عملکرد (Performance) در جاوا




سوالات متداول (FAQ)

سوال ۱: آیا می‌توانم بدون ایجاد آرایه جدید، عنصر را از آرایه حذف کنم؟

خیر، به دلیل طول ثابت آرایه در جاوا، نمی‌توانید اندازه آرایه را کاهش دهید.
می‌توانید عنصر را با جابه‌جایی «نادیده» بگیرید.

سوال ۲: کارآمدترین روش برای حذف عنصر از آرایه چیست؟

برای آرایه‌های اولیه ([]int[]، double) روش ایجاد آرایه جدید بهترین است.
برای آرایه‌های غیراولیه، تبدیل به ArrayList راحت‌ترین است.

سوال ۳: چرا آرایه متد remove ندارد؟

چون آرایه در جاوا یک شیء با طول ثابت است و زبان جاوا عمداً آن را به سادگی و کارایی بالا طراحی کرده است.
برای عملیات پویا باید از ArrayList استفاده کنید.

سوال ۴: چه فرقی بین حذف از Array و ArrayList وجود دارد؟

در ArrayList، متد remove() به صورت آماده وجود دارد و اندازه لیست به طور خودکار کاهش می‌یابد.
در Array باید خودتان این کار را مدیریت کنید.

سوال ۵: چگونه می‌توانم یک عنصر را حذف کنم و آرایه اصلی تغییر نکند؟

با روش اول (ایجاد آرایه جدید) آرایه اصلی دست نخورده می‌ماند و فقط یک آرایه جدید حاوی عناصر باقی‌مانده برگردانده می‌شود.

سوال ۶: آیا می‌توانم چندین عنصر مختلف را یکجا حذف کنم؟

بله. می‌توانید شرط حذف را پیچیده‌تر کنید، مثلاً همه اعداد زوج یا همه اعداد بزرگتر از ۱۰ را حذف کنید.

جمع‌بندی نهایی

برای حذف یک عنصر از آرایه در جاوا سه روش اصلی داریم:
  • ایجاد آرایه جدید – مناسب برای همه نوع آرایه، شفاف و قابل فهم
  • استفاده از ArrayList – ساده‌ترین روش، فقط برای آرایه‌های غیراولیه
  • جابه‌جایی درجا – مصرف حافظه کمتر، پیچیدگی کد بیشتر

اگر با داده‌های ایستا کار می‌کنید و نیاز به حذف مکرر دارید، بهتر است از ابتدا از ArrayList استفاده کنید.
اما اگر به هر دلیلی با Array کار می‌کنید، روش‌های بالا تمام نیازهای شما را پوشش می‌دهند.

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “حذف یک عنصر از آرایه در جاوا” اشتراک بزارید

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو