کار با آرایه ها در جاوا

ناصر نادری | 1393/10/05


بنام خدا . سلام خدمت دوستان .تو این جلسه آرایه هارو داریم...

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

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

در جاوا از دو طریق میشه ارایه هارو تعریف کرد :

  dataType[] arrayRefVar; // راهی که ترجیح داده میشود از آن  استفاده کنید.

or

dataType arrayRefVar[]; //  (برای برنامه نویسانی گه قبلا c,c++ کار کردند)یک  روش دیگه ولی بهتره استفاده نکنید

 

مثال عملی :

  double[] myList;

or

double myList[];

 

میتونیم در هنگام تعریف یک آرایه فضایی از حافظه رو بهش اختصاص بدیم و یا در هنگام تعریف اون رو مقدار دهی کنیم .

  arrayRefVar = new dataType[arraySize];

 

تعریف بالا دو بخش داشته

- اول یک آرایه توسط دستور  dataType[arraySize[ تعریف میشه .

- و سپس یک ارجاع به ارایه ایجاد شده را به متعییر arrayrefVar اختصاص میده .

تمام کار های بالارو میشه در یک خط کد انجام داد .

  dataType[] arrayRefVar = new dataType[arraySize];

 

یا میتونیم در زمان تعریف ارایه رو مقدار دهی کنیم :

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

 

برای دسترسی به عناصر آرایه از اندیس استفاده میکنیم که مقدار اون در جاوا از 0 شروع میشه و تا arrayRefVar .length-1  ادامه داره ...

در مثال زیر یک آرایه 10 عضوی از نوع double تعریف می کنیم ..

   double[] myList = new double[10]; 

در تصویر زیر شمای کلی ارایه ای که تغریف کردیم رو میبینیم :

http://www.tutorialspoint.com/images/java_array.jpg

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

روی مثال زیر دقت کنید :

  public class TestArray {

    public static void main(String[] args) {
        double[] myList = {1.9, 2.9, 3.4,  3.5};

        //چاپ تمام عناصر آرایه 
        for (int i = 0; i < myList.length;  i++) {
        System.out.println(myList[i] + " ");
    }
        // جمع تمام عناصر
        double total = 0;
        for (int i = 0; i < myList.length;  i++) {
            total +=  myList[i];
        }
        System.out.println("Total is " +  total);
        // پیدا کردن بزرگترین عنصر
        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 :

بعد از جاوای نسخه 1.5 یک حلقه جدید در برنامه نویسی جاوا معرفی شد که کارش پیمایش عناصر یک ارایه و پردازش اون بدون نیاز به اندیس گذاری هست ...

به مثال زیر توجه کنید :

  public class TestArray {

    public static void main(String[] args) {
        double[] myList = {1.9, 2.9, 3.4,  3.5};

        // چاپ تمام عناصر آرایه
        for (double element: myList) {
             System.out.println(element);
        }
    }
}

 

 

نتیجه اجرای کد بالا :

 1.9
2.9
3.4
3.5

 

پاس دادن آرایه احل یک تابع (method)

میتونیم مثل انواع دیگه آریه رو هم به داخل یک متد پاس بدیم

  public static void printArray(int[] array) {
    for (int i = 0; i < array.length; i++) {
        System.out.print(array[i] + " ");
    }
}

>

 

میتونیم مقدار دهی آرایه رو زمانی که داریم به یک متد پاس میدیم انجام بدیم :

  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 برای انجام یک سری پردازش روی آرایه استفاده میشه . مثل مرتب سازی , جستجو , مقایسه و مقداردهی  :

public static int binarySearch(Object[] a, Object key) آرایه ای که در پارامتر اول داده شده برای پیدا کردن کلید که در پارامتر دوم داده شده جستجو میکنه . این آرایه باید مرتب شده باشه در صورتی که کلید رو پیدا کرد مقدار اندیس عنصر حاوی کلید جستجو شده رو برمیگردونه .
public static boolean equals(long[] a, long[] a2) زمانی که دو آرایه پاس داده شده به این تابع (که میتونن از هرنوع اولیه ای باشن و در اینجا long تعریف شده ) از نظر تعداد پارامترها و مقدار پارامتر های متناظر با هم مقایسه میشن اگه برابر بودن مقدار true رو برمیگردونه .
public static void fill(int[] a, int val) مقدار دهی تمام عناصر ارایه با پارامتر دوم
public static void sort(Object[] a) مرتب سازی عناصر آرایه

تا جلسه بعد زنده و شاد باشید ....

 


فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد

نظرات شما نظر جدید