0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

آیا می توان در جاوا سایز یک آرایه را بعد از ایجاد تغییر داد؟ می خواهم با حفظ عناصر قبلی که در آرایه اضافه شده است سایز آن را افزایش دهم.

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)

در زبان برنامه نویسی جاوا پس از تعریف آرایه و مشخص شدن سایز آن سینتکسی برای تغییر سایز آن وجود ندارد، ولی با استفاده از reflection می توان این کار را انجام داد:

private static Object resizeArray (Object oldArray, int newSize) {
   int oldSize = java.lang.reflect.Array.getLength(oldArray);
   Class elementType = oldArray.getClass().getComponentType();
   Object newArray = java.lang.reflect.Array.newInstance(
         elementType,newSize);
   int preserveLength = Math.min(oldSize,newSize);
   if (preserveLength > 0)
      System.arraycopy (oldArray,0,newArray,0,preserveLength);
   return newArray; 
}

// Test routine for resizeArray().
public static void main (String[] args) {
   int[] a = {1,2,3};
   a = (int[])resizeArray(a,5);
   a[3] = 4;
   a[4] = 5;
   for (int i=0; i<a.length; i++)
      System.out.println (a[i]); 
}
قبل توسط (365 امتیاز)
سلام. ولی این کدی که نوشتید سایز آرایه را تغییر نمیدهد، بلکه یک آرایه جدید از همان نوع ایجاد میکند و عناصر آرایه قدیمی را در آرایه جدید کپی میکند.
قبل توسط (1.1هزار امتیاز)
بله این بهترین راهی بود که به دهنم رسیده بود. اگه راه بهتری میدونید لطفا بگین. تشکر.
قبل توسط (365 امتیاز)
+1
نه راه بهتری بلد نیستم. در واقع فکر کنم همانطور که گفتید راهی برای افزایش طول همان آرایه نیست. متدی که نوشتید عمومی است و هم برای آرایه ای از اشیاء (مثل آرایه ای از رشته ها) و هم آرایه ای از انواع اولیه (آرایه ای از int) کار میکند.

سوالات مشابه

0 امتیاز
1 پاسخ 341 بازدید
+1 امتیاز
1 پاسخ 569 بازدید
0 امتیاز
0 پاسخ 450 بازدید
+1 امتیاز
1 پاسخ 610 بازدید
0 امتیاز
1 پاسخ 557 بازدید
0 امتیاز
1 پاسخ 556 بازدید
0 امتیاز
1 پاسخ 267 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 674 بازدید
+1 امتیاز
1 پاسخ 1.4هزار بازدید
...