متدهای آرایه در جاوا
متدهای آرایه در جاوا در کلاس Arrays قرار دارند. مهمترینها: sort (مرتبسازی)، binarySearch (جستجو)، equals (مقایسه).
23 اردیبهشت 1405
لینک کوتاه
متدهای آرایه در جاوا (Java Array Methods)
متدهای آرایه در جاوا توسط کلاس java.util.Arrays ارائه میشوند.از آنجا که آرایهها در جاوا متدهای داخلی ندارند، این کلاس ابزارهای قدرتمندی برای انجام عملیات روی آرایهها در اختیار برنامهنویسان قرار میدهد.
مهمترین این متدها عبارتند از: sort() برای مرتبسازی صعودی عناصر، ()binarySearchبرای جستجوی سریع با الگوریتم دودویی (پیشنیاز: آرایه مرتب)، ()equals برای مقایسه دو آرایه از نظر طول و مقادیر، () fill برای پر کردن آرایه با یک مقدار مشخص، ()copyOf و () copyOfRangeبرای کپی کردن بخشی یا تمام آرایه، و toString() برای نمایش محتوای آرایه به صورت رشته خوانا.
تمامی این متدها به صورت استاتیک (static) طراحی شدهاند، یعنی برای استفاده از آنها نیازی به ساختن شیء از کلاس Arrays نیست و مستقیماً با نوشتن ()Arrays.nomreMetd قابل فراخوانی هستند.
توجه به این نکته ضروری است که متدهایی مانند ()binarySearch تنها در صورتی نتیجه درست برمیگردانند که آرایه ورودی از قبل مرتب شده باشد.
همچنین برای آرایههای چندبعدی، باید به جای ()equals و () toStringبه ترتیب از متدهای ()deepEquals و ()deepToString استفاده کرد تا مقایسه و نمایش به درستی انجام شود.
تفاوت Array و کلاس Arrays در جاوا
یکی از رایجترین سوالاتی که در مصاحبههای کاری و آزمونهای جاوا پرسیده میشود، تفاوت بین Array و کلاس Arrays است.| ویژگی | Array | کلاس Arrays |
| نوع | ساختار داده پایه در جاوا | کلاس ابزاری در پکیج java.util |
| قابلیت | ذخیره چند مقدار همنوع | ارائه متدهای آماده برای کار با آرایهها |
| روش ایجاد | ;int[] numbers = new int[5] | نیازی به نمونهسازی (new) نیست، متدها static هستند |
| متدها | فقط خاصیت length را دارد | متدهایی مثل sort، binarySearch، equals، fill و ... |
نکته مهم: Array یک شیء است اما متدهای مفید ندارد.
کلاس Arrays مجموعهای از متدهای استاتیک است که آرایهها را به ورودی میگیرد و روی آنها عملیات انجام میدهد.
🚀 از صفر تا قهرمان جاوا، فقط با یک دوره!
به دنبال یه فرصت طلایی برای شروع برنامهنویسی میگردی؟
دوره آموزشی جاوا ما، همون چیزیه که نیاز داری!✨ چرا این دوره رو انتخاب میکنی؟
🎯 از مبتدی تا حرفهای
بدون پیشزمینه شروع میکنی و به یه برنامهنویس جاوا تبدیل میشی که بازار کار منتظرته!🛠 پروژهمحور و عملی
با انجام پروژههای واقعی، کدنویسی رو یاد میگیری، نه فقط تئوری!👨🏫 پشتیبانی همیشگی
هرجا گیر کنی، تیم پشتیبانی کنارته تا مشکلت حل بشه.🔓 دسترسی مادامالعمر
هر وقت خواستی به محتوا دسترسی داری، برای همیشه!
مهمترین متدهای Arrays در جاوا (به همراه مثال)
در این بخش، پرکاربردترین متدهای آرایه در جاوا را با مثال واقعی یاد میگیریم.۱. متد sort در Arrays کلاس Java (مرتبسازی آرایه)
متد () sort آرایه را به صورت صعودی مرتب میکند.import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] numbers = {5, 2, 8, 1, 9};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));
// خروجی: [1, 2, 5, 8, 9]
}
}
مرتبسازی بخشی از آرایه: میتوانید فقط یک بازه مشخص را مرتب کنید:
int[] numbers = {5, 2, 8, 1, 9, 3, 7};
Arrays.sort(numbers, 1, 5); // مرتبسازی ایندکس 1 تا 4 (5 شامل نمیشود)
// نتیجه: {5, 1, 2, 8, 9, 3, 7}
۲. متد binarySearch در Java (جستجوی سریع)
قبل از استفاده از ()binarySearch، آرایه حتماً باید مرتب باشد.این متد با الگوریتم جستجوی دودویی، ایندکس عنصر مورد نظر را برمیگرداند.
int[] numbers = {10, 20, 30, 40, 50};
int index = Arrays.binarySearch(numbers, 30);
System.out.println(index); // خروجی: 2 (ایندکس 2 = مقدار 30)
اگر عنصر پیدا نشود: متد یک عدد منفی برمیگرداند که جایگاه درج عنصر را نشان میدهد.
int index = Arrays.binarySearch(numbers, 35);
System.out.println(index); // خروجی: -4 (یعنی اگر 35 را در ایندکس 3 درج کنیم، آرایه مرتب میماند)
نکته آموزشی: binarySearch بسیار سریعتر از جستجوی خطی است، مخصوصاً برای آرایههای بزرگ.
۳. متد equals در Arrays (مقایسه دو آرایه)
متد ()equals بررسی میکند که دو آرایه از نظر طول و مقادیر در ایندکسهای متناظر، کاملاً برابر باشند.int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
int[] arr3 = {1, 2, 4};
System.out.println(Arrays.equals(arr1, arr2)); // true
System.out.println(Arrays.equals(arr1, arr3)); // false
مقایسه آرایههای چندبعدی: برای آرایههای دو بعدی یا بیشتر، باید از ()deepEquals استفاده کنید.
int[][] a = {{1, 2}, {3, 4}};
int[][] b = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepEquals(a, b)); // true
۴. متد ()fill – پر کردن آرایه با یک مقدار
int[] numbers = new int[5];
Arrays.fill(numbers, 10);
System.out.println(Arrays.toString(numbers)); // [10, 10, 10, 10, 10]
پر کردن بازه مشخص:
int[] numbers = new int[10];
Arrays.fill(numbers, 2, 6, 99); // ایندکس 2 تا 5 مقدار 99 میگیرند
۵. متد ()copyOf و ()copyOfRange – کپی کردن آرایه
int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOf(original, 3); // کپی ۳ عنصر اول
System.out.println(Arrays.toString(copy)); // [1, 2, 3]
int[] rangeCopy = Arrays.copyOfRange(original, 1, 4); // ایندکس 1 تا 3
System.out.println(Arrays.toString(rangeCopy)); // [2, 3, 4]
۶. متد ()toString – نمایش آرایه به صورت رشته
int[] numbers = {1, 2, 3};
System.out.println(Arrays.toString(numbers)); // [1, 2, 3]
بدون این متد، چاپ مستقیم آرایه خروجی نامفهومی مثل [I@15db9742 میدهد.
۷. متد ()asList – تبدیل آرایه به لیست
String[] names = {"Ali", "Reza", "Sara"};
List<String> list = Arrays.asList(names);
System.out.println(list); // [Ali, Reza, Sara]
هشدار: لیست تولید شده توسط ()asList اندازه ثابتی دارد و نمیتوانید به آن عنصر اضافه یا حذف کنید.
۸. متد ()stream – تبدیل آرایه به Stream برای عملیات پیشرفته
int[] numbers = {1, 2, 3, 4, 5};
int sum = Arrays.stream(numbers).sum(); // مجموع اعداد
double avg = Arrays.stream(numbers).average().getAsDouble(); // میانگین

ترکیب چند متد Arrays در یک برنامه واقعی
فرض کنید میخواهید لیست نمرات دانشجویان را مدیریت کنید:import java.util.Arrays;
public class StudentScores {
public static void main(String[] args) {
int[] scores = {18, 12, 19, 14, 16, 20, 15};
// 1. مرتبسازی
Arrays.sort(scores);
System.out.println("مرتب شده: " + Arrays.toString(scores));
// 2. جستجوی نمره 16
int index = Arrays.binarySearch(scores, 16);
System.out.println("نمره 16 در ایندکس: " + index);
// 3. کپی ۳ نمره برتر
int[] top3 = Arrays.copyOfRange(scores, scores.length - 3, scores.length);
System.out.println("۳ نمره برتر: " + Arrays.toString(top3));
// 4. مقایسه دو آرایه
int[] newScores = Arrays.copyOf(scores, scores.length);
System.out.println("آرایهها برابرند؟ " + Arrays.equals(scores, newScores));
// 5. پر کردن آرایه جدید با مقدار پیشفرض
int[] defaultScores = new int[10];
Arrays.fill(defaultScores, 10);
System.out.println("نمرات پیشفرض: " + Arrays.toString(defaultScores));
}
}
خروجی برنامه:
مرتب شده: [12, 14, 15, 16, 18, 19, 20]
نمره 16 در ایندکس: 3
۳ نمره برتر: [18, 19, 20]
آرایهها برابرند؟ true
نمرات پیشفرض: [10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
جدول خلاصه مهمترین متدهای Arrays در جاوا
| متد | کاربرد | مثال |
| sort(arr) | مرتبسازی صعودی | Arrays.sort(numbers) |
| binarySearch(arr, key) | جستجوی دودویی | Arrays.binarySearch(nums, 5) |
| equals(arr1, arr2) | مقایسه برابری | Arrays.equals(a, b) |
| fill(arr, value) | پر کردن با مقدار | Arrays.fill(nums, 0) |
| copyOf(arr, newLength) | کپی با طول جدید | Arrays.copyOf(a, 10) |
| toString(arr) | نمایش به صورت رشته | Arrays.toString(a) |
| asList(arr) | تبدیل به لیست | Arrays.asList(arr) |
سوالات متداول درباره متدهای آرایه در جاوا
سوال ۱: آیا میتوان آرایه را بدون استفاده از کلاس Arrays مرتب کرد؟
بله، میتوانید الگوریتم مرتبسازی مثل Bubble Sort یا Quick Sort را خودتان پیاده کنید. اما استفاده از ()Arrays.sort بسیار بهینهتر و کمخطاتر است.سوال ۲: چرا متدهای Arrays همگی static هستند؟
چون این متدها فقط روی آرایه ورودی عملیات انجام میدهند و نیازی به نگهداری حالت خاصی ندارند. متدهای static را میتوان بدون ساختن شیء از کلاس فراخوانی کرد.سوال ۳: تفاوت بین length در Array و ()length در String چیست؟
length یک خاصیت (field) در آرایههاست و بدون پرانتز نوشته میشود: array.length()length یک متد در کلاس String است و با پرانتز نوشته میشود: () str.length
جمعبندی نهایی
۱. آرایه (Array) یک ساختار پایه است، اما کلاس Arrays مجموعهای از متدهای آماده برای کار با آرایهها فراهم میکند.۲. مهمترین متدهای آرایه در جاوا عبارتند از:
- ()sort برای مرتبسازی
- ()binarySearch برای جستجوی سریع
- ()equals برای مقایسه
- () fillبرای مقداردهی
- () copyOfو copyOfRange() برای کپی
- ()toString برای نمایش
- () asListبرای تبدیل به لیست
۳. همیشه قبل از استفاده از ()binarySearch آرایه را با () sortمرتب کنید، در غیر این صورت نتیجه نامعتبر خواهد بود.
۴. برای آرایههای چندبعدی، از ()deepEquals و ()deepToString استفاده کنید


کاربران ما
شما هم نظرتون با ما دریاره “متدهای آرایه در جاوا” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید