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 پاسخ 346 بازدید
+1 امتیاز
1 پاسخ 580 بازدید
0 امتیاز
0 پاسخ 458 بازدید
+1 امتیاز
1 پاسخ 615 بازدید
0 امتیاز
1 پاسخ 562 بازدید
0 امتیاز
1 پاسخ 564 بازدید
0 امتیاز
1 پاسخ 271 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 680 بازدید
+1 امتیاز
1 پاسخ 1.4هزار بازدید
...