tiago2

New Member
ارسال ها
1
لایک ها
4
امتیاز
0
#1
Java - Arrays
جاوا یک ساختار داده ی array ارائه می دهد که یک مجموعه ی پی در پی با اندازه ی ثابت از عناصر هم نوع را ارائه می دهد. یک ردیف برای ذخیره ی مجموعه ای از داده ها استفاده می شود، اما بهتر است که یک ردیف را به عنوان مجموعه ای از متغیرهای هم نوع در نظر بگیریم.
به جای اعلام متغیرهای مجزا، از قبیل number0, number1, ..., و number99، شما یک ردیف متغیر مانند اعداد اعلام می کنید و از فرمت numbers[0], numbers[1], و ..., numbers[99] استفاده می کنید تا متغیرهای مجزا را نشان دهید.
این آموزش چگونگی اعلام متغیرهای ردیف، ایجاد ردیف ها و پردازش ردیف ها با استفاده از متغیرهای نمایه (indexed variables) را معرفی می کند.
اعلام متغیرهای ردیف (Array Variables):
برای استفاده از یک ردیف در یک برنامه، باید متغیری را اعلام کنید تا به ردیف ارجاع کند و شما باید نوع ردیفی را که متغیر می تواند به آن ارجاع کند، تعیین کنید. در اینجا ترکیبی برای اعلام متغیر یک ردیف می بینید:
dataType[] arrayRefVar; // preferred way.
or
dataType arrayRefVar[]; // works but not preferred way.


نکته: سبک dataType[] arrayRefVar ترجیح داده می شود، این سبک از زبان C/C++ آمده و در جاوا برای هماهنگی برنامه نویسان C/C++، اتخاذ شد.
مثال:
کدها ی زیر مثال هایی از این ترکیب می باشند:
کد
double[] myList;         // preferred way.
 
or
 
double myList[];         //  works but not preferred way.
ایجاد ردیف ها:
شما می توانید یک ردیف را با استفاده از اپراتور جدید، با ترکیب زیر ایجاد کنید:
کد
arrayRefVar = new dataType[arraySize];
عبارت بالا دو کار انجام می دهد:

  • با استفاده از داده ی جدید Type[arraySize] ، یک ردیف ایجاد می کند.
  • مرجع ردیف تازه ایجاد شده را به متغیر arrayRefVar اختصاص می دهد.

اعلام یک متغیر ردیف، ایجاد یک ردیف و اختصاص دادن مرجع ردیف به متغیر می تواند در یک عبارت ترکیب شود، همانطور که در زیر نشان داده شده است:
کد
dataType[] arrayRefVar = new dataType[arraySize];
متناوبا شما می توانید ردیف هایی مانند زیر ایجاد کنید:
کد
dataType[] arrayRefVar = {value0, value1, ..., valuek};
عناصر ردیف از طریق index قابل دسترسی می باشند. شاخص های ردیف 0-based می باشند که به این معناست که از 0 شروع شده تا arrayRefVar.length-1.
مثال:
عبارت زیر متغیر یک ردیف، myList ، را اعلام می کند، یک ردیف با 10 عنصر از نوع double ایجاد می کند و مرجع خود را به myList اختصاص می دهد:

double[] myList = new double[10];

تصویر زیر ردیف myList را نشان می دهد. در اینجا myList ده عنصر دوگانه را در خود دارد و شاخص ها از 0 تا 9 می باشند.

پردازش ردیف ها:
هنگام پردازش عناصر ردیف، اغلب از for loop یا foreach loop استفاده می کنیم، زیرا همه ی عناصر در یک ردیف از یک نوع می باشند و سایز ردیف نیز مشخص است.
مثال:
در اینجا یک مثال کامل از نمایش چگونگی ایجاد، آغاز و پردازش ردیف ها می بینید:
کد
public class TestArray {
 
   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};
 
      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      // Finding the largest element
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);
   }
}
این مثال نتیجه ی زیر را تولید خواهد کرد:

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

Loop های foreach:
JDK 1.5 یک for loop جدید با عنوان foreach loop یا for loop ارتقا یافته معرفی کرد که شما را قادر به گذشتن از ردیف کامل بدون استفاده از یک متغیر ایندکس، می سازد.
مثال:
کزیر همه ی عناصر را در ردیف myList نشان می دهد:
کد
public class TestArray {
 
   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};
 
      // Print all the array elements
      for (double element: myList) {
         System.out.println(element);
      }
   }
}
این مثال نتیجه ی زیر را به دنبال خواهد داشت:

1.9
2.9
3.4
3.5

انتقال ردیف ها به متودها:
همانطور که می توانید مقادیر نوع اولیه را به متودها انتقال دهید، همچنین می توانید ردیف ها را به متودها انتقال دهید. برای مثال متود زیر عناصر را در یک ردیف int نمایش می دهد:
کد
public static void printArray(int[] array) {
  for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
  }
}
شما می توانید آن را با انتقال یک ردیف فراخوانی کنید. برای مثال عبارت زیر، متود printArray را برای نمایش 3، 1، 2، 6، 4، و 2 فرا می خواند:
کد
printArray(new int[]{3, 1, 2, 6, 4, 2});
بازگشت یک ردیف از یک متود:
یک متود ممکن است یک ردیف را نیز بازگرداند. برای مثال متود نمایش داده شده در زیر ردیفی را که معکوس ردیف دیگر می باشد، بازمی گرداند:
کد
public static int[] reverse(int[] list) {
  int[] result = new int
[list.length];
 
  for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
    result[j] = list[i];
  }
  return result;
}
گروه Arrays:
گروه java.util.Arrays حاوی متودهای استاتیک متفاوتی برای مرتب کردن و جستجوی ردیف ها، مقایسه ی ردیف ها و پرکردن عناصر ردیف می باشد. این متودها برای همه ی انواع اولیه بارگذاری می شوند.
[TABLE="width: 560"]
[TR]
[TD]SN[/TD]
[TD]Methods with Description[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]public static int binarySearch(Object[] a, Object key).
با استفاده از الگاریتم دوتایی جستجو، ردیف مشخص شده ی آبجکت را برای مقدار تعیین شده، جستجو می کند. ردیف باید قبل از انجام این فراخوانی مرتب شده باشد. این متود اگر در لیست باشد، ایندکس مربوط به کلید جسنجو را بازمی گرداند، در غیر این صورت (-(insertion point + 1).[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]public static boolean equals(long[] a, long[] a2)
اگر دو ردیف مشخص شده از longs با یکدیگر برابر باشند، true را گزارش می دهد. دو ردیف در صورتی برابر در نظر گرفته می شوند که هر دو دارای تعداد عناصر یکسان باشند و همه ی جفت های متناظر عناصر در هر دو ردیف برابر باشند. همان متود توسط همه ی داده های اولیه ی دیگر نیز قابل استفاده می باشد. [/TD]
[/TR]
[TR]
[TD]3[/TD]
[TD]public static void fill(int[] a, int val)
مقدار مشخص شده ی int را به هر عنصر از ردیف مشخص شده ی int ها اختصاص می دهد. همان متود می تواند توسط دیگر داده های اولیه استفاده شود. (Byte, short, Int etc.)[/TD]
[/TR]
[TR]
[TD]4[/TD]
[TD]public static void sort(Object[] a)
ردیف مشخص شده از آبجکت ها را به ترتیب صعودی، مطابق با ترتیب طبیعی عناصر آن، مرتب می سازد. همان متود می تواند برای دیگر انواع داده ی اولیه استفاده شود. ( Byte, short, Int, etc.)[/TD]
[/TR]
[/TABLE]
 
بالا