آرایه ها در جاوا
در این قسمت قصد داریم با آرایه ها و ایجاد آرایه و کار با آرایه ها در جاوا آشنا شویم…..
جاوا یک نوع ساختار داده به نام آرایه را نیز فراهم کرده است. آرایه ها مجموعه ای از عناصر متوالی با اندازه ثابت و هم نوع را ذخیره می کنند. یک آرایه برای ذخیره مجموعه ای از داده ها استفاده می شود ، اما اغلب مفید تر از آن است که فکر کنیم یک آرایه مجموعه ای از متغیرهای هم نوع است.
به جای تعریف متغیرها بصورت تکی و انفرادی، مثل 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[] از زبان C / C ++ می آید و در جاوا برای تطبیق یافتن در برنامه های C / C ++ به تصویب رسیده است.
مثال:
قطعه کد زیر نمونه هایی از تعریف آرایه در جاوا به هر دو سبک می باشد:
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};
عناصر آرایه از طریقindex (اندیس) قابل دسترسی هستند. اندیس آرایه ها از ۰ شروع می شود؛ بنابراین اندیس آرایه از ۰ شروع می شود تا ۱٫
مثال:
دستور زیر یک متغیر آرایه با نام 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); } }
کد فوق نتیجه ی زیر را تولید می کند:
حلقه foreach
JDK 1.5 یک حلقه for جدید معرفی کرده است با نام حلقه foreach یا حلقه for بهبود یافته، که شما را قادر به پیمایش کل آرایه به ترتیب و بدون استفاده از یک متغیر اندیس می کند.
مثال:
کد زیر همه عناصر در آرایه 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); } } }
کد بالا نتیجه زیر را تولید خواهد کرد:
ارسال آرایه به متدها
فقط می توان مقادیر با نوع اولیه را به متدها ارسال کرد، البته همچنین می توان آرایه ها را نیز به متدها ارسال کنید. به عنوان مثال، متد زیر عناصر یک آرایه از نوع 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; }
کلاس آرایه ها در جاوا
کلاس java.util.Arrays شامل متدهای مختلف استاتیک برای مرتب سازی و جستجو آرایه ها، مقایسه آرایه ها، و پر کردن عناصر آرایه است.
شماره | متد و توصیف |
۱ |
public static int binarySearch(Object[] a, Object key) در آرایه مشخص از شی ( Byte, Int , double,) برای پیدا کردن مقداری مشخص جستجو می کند. برای جست و جو از الگوریتم جستجوی دودویی استفاده می کند. آرایه باید از قبل ذخیره شود تا این فراخوانی ایجاد شود. این متد اندیس اگر کلید جست وجو در لیست موجود باشد اندیس آن را برمی گرداند، در غیر این صورت، ۱- برمی گرداند. |
۲ |
public static boolean equals(long[] a, long[] a2) اگر دو آرایه ارسال شده به متد از نظر طول با یکدیگر برابر باشند مقدار درست برمی گرداند. دو آرایه برابر در نظر گرفته می شود اگر هر دو آرایه حاوی تعداد یکسانی از عناصر باشند، و تمام جفت متناظر عناصر در دو آرایه برابر باشند. |
۳ |
public static void fill(int[] a, int val) مقدار از نوع int مشخص شده را برای هر عنصر از آرایه مشخص از نوع داده Int اختصاص می دهد. |
۴ |
public static void sort(Object[] a) عناصر آرایه مشخصی شده را بصورت ترتیب صعودی ، با توجه به ترتیب طبیعی عناصر آن مرتب می کند. |