شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش جاوا - آرایه ها

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

آرایه ها به عنوان مجموعه‌ای از متغیرهای هم‌نوع میباشند.

به جای اعلام متغیرهای جداگانه، مانند number0، number1، ... و number99، شما یک متغیر آرایه مانند numbers اعلام می‌کنید و از numbers[0]، numbers[1]، ... و numbers[99] برای نمایش متغیرهای جداگانه استفاده می‌کنید.

اعلام متغیرهای آرایه

برای استفاده از یک آرایه در برنامه، باید یک متغیر برای ارجاع دادن به آرایه اعلام کنید و باید نوع آرایه را که متغیر می‌تواند به آن ارجاع دهد، مشخص کنید. در ادامه نحوه اعلام متغیر آرایه را مشاهده می‌کنید −

نحوه نوشتاری


dataType[] arrayRefVar;   // preferred way.
or
dataType arrayRefVar[];  // works but not preferred way.

توجه − سبک نوشتاری dataType[] arrayRefVar ترجیح داده می‌شود. سبک نوشتاری dataType arrayRefVar


double[] myList;   // preferred way.
or
double myList[];   // works but not preferred way.

ایجاد آرایه‌ها

شما می‌توانید با استفاده از اپراتور new و با استفاده از نحوه نوشتاری زیر یک آرایه ایجاد کنید −

نحوه نوشتاری


arrayRefVar = new dataType[arraySize];

این عبارت بالا دو کار را انجام می‌دهد −

  • با استفاده از new dataType[arraySize] یک آرایه ایجاد می‌شود.

  • مرجع آرایه ایجاد شده به متغیر arrayRefVar اختصاص داده می‌شود.

اعلام متغیر آرایه، ایجاد آرایه و اختصاص مرجع آرایه به متغیر می‌تواند در یک عبارت ترکیب شوند، همانطور که در زیر نشان داده شده است −


dataType[] arrayRefVar = new dataType[arraySize];

به طور جایگزین، می‌توانید آرایه‌ها را به شکل زیر ایجاد کنید −

dataType[] arrayRefVar = {value0, value1, ..., valuek};

اجزای آرایه از طریق اندیس قابل دسترسی هستند. اندیس‌های آرایه از صفر شروع می‌شوند؛ به عبارتی، از ۰ تا arrayRefVar.length-1 هستند.

مثال

با استفاده از عبارت زیر، یک متغیر آرایه به نام myList اعلام می‌شود، یک آرایه با ۱۰ عنصر از نوع double ایجاد می‌شود و مرجع آن به myList اختصاص داده می‌شود −

double[] myList = new double[10];

تصویر زیر، آرایه myList را نشان می‌دهد. در اینجا، myList ده مقدار double را نگه می‌دارد و اندیس‌ها از ۰ تا ۹ هستند.

آرایه جاوا

پردازش آرایه‌ها

هنگام پردازش عناصر آرایه، معمولاً از حلقه for یا حلقه foreach استفاده می‌کنیم زیرا همه عناصر آرایه از یک نوع هستند و اندازه آرایه مشخص است.

مثال

اینجا مثالی کامل نشان می‌دهد که چگونه آرایه‌ها را ایجاد، مقداردهی اولیه و پردازش کنیم −

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

حلقه foreach

JDK 1.5 حلقه‌ای جدید به نام حلقه foreach یا حلقه تقویت شده را معرفی کرد که به شما امکان می‌دهد تا بدون استفاده از متغیر اندیس، به صورت ترتیبی تمامی عناصر آرایه را طی کنید.

مثال

کد زیر تمامی عناصر آرایه 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 را فراخوانی می‌کند تا اعداد ۳، ۱، ۲، ۶، ۴ و ۲ را نمایش دهد −

مثال


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 شامل انواع مختلفی از متدهای استاتیک برای مرتب‌سازی و جستجو در آرایه‌ها، مقایسه‌ی آرایه‌ها و پرکردن عناصر آرایه است. این متدها برای تمامی انواع داده‌های ابتدایی بارگیری شده‌اند.

شماره متد و توضیحات
1

public static int binarySearch(Object[] a, Object key)

با استفاده از الگوریتم جستجوی دودویی، در آرایه مشخص شده از نوع Object (Byte، Int، double و غیره) برای مقدار مشخص شده جستجو می‌کند. قبل از استفاده از این متد، آرایه باید مرتب شده باشد. این متد شاخص جستجو را برمی‌گرداند اگر کلید جستجو در آرایه وجود داشته باشد؛ در غیر این صورت، ( - (نقطه وارد شده + 1)) برمی‌گرداند.

2

public static boolean equals(long[] a, long[] a2)

اگر دو آرایه مشخص شده از نوع long با هم برابر باشند، این متد true را برمی‌گرداند. دو آرایه به عنوان یکسان در نظر گرفته می‌شوند اگر هر دو آرایه شامل تعداد یکسانی از عناصر باشند و همه‌ی جفت‌های متناظر از عناصر دو آرایه برابر باشند. این متد true را برمی‌گرداند اگر دو آرایه برابر باشند. این متد می‌تواند برای تمامی انواع داده‌های ابتدایی دیگر (Byte، short، Int و غیره) استفاده شود.

3

public static void fill(int[] a, int val)

مقدار int مشخص را به هر عنصر از آرایه مشخص شده از اعداد صحیح نسبت می‌دهد. این متد می‌تواند برای تمامی انواع داده‌های ابتدایی دیگر (Byte، short، Int و غیره) استفاده شود.

4

public static void sort(Object[] a)

آرایه مشخص شده از اشیاء را بر اساس ترتیب طبیعی عناصرش به صورت صعودی مرتب می‌کند. این متد می‌تواند برای تمامی انواع داده‌های ابتدایی دیگر (Byte، short، Int و غیره) استفاده شود.