آرایه های چند بعدی در جاوا (جامع ترین منبع آموزش در جاوا)
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
آموزش آرایههای دو بعدی و لیستها در زبان جاوا:
در جلسه قبل آرایههای یک بعدی را توضیح دادیم. گفتیم که آرایهها یک بعدی خانههای کنارهم در حافظه هستند که میتوانند دادههای بسیار زیادی را از یک نوع داده نگهداری کنند. دادهها در خانههایی که همگی دارای یک نام هستند اما به کمک شمارههایی از هم جدا میشوند را ذخیره می کنیم و در صورت نیاز میتوانیم به صورت مستقیم به هریک از خانه های آرایه دسترسی داشته باشیم. مزیت اصلی آرایهها این است که سرعت بازیابی اطلاعات در این خانهها خیلی زیاد است. با وجود داشتن شماره هر خانه میتوانیم مستقیما به سراغ خانه مورد نظر خود برویم و اطلاعات را بازیابی و یا حتی داخل آن ذخیره کنیم. اما چرا به آنها آرایههای یک بعدی میگویند؟ به این علت که هر خانه دارای یک شماره یا اندیس است.
در این جلسه میخواهیم آرایههای چند بعدی را توضیح دهیم. که دسته اول آرایههای چند بعدی، آرایههای دوبعدی هستند که کاربردهای خیلی زیادی دارند و در حوزههای گرافیک و انیمیشن میتوانند بسیار کمک دهند. آرایههای دوبعدی ویژگیهای آرایههای یک بعدی را دارند. در واقع خانههای کنارهم در حافظه هستند که دارای یک نام بوده و اما توسط دو شماره می توان به هر خانه دسترسی داشت. یکی از ویژگیهای بارز آرایهها این است که به صورت ایستا تعریف میشوند. یعنی در لحظه تعریف آرایه باید مشخص کنیم که چه تعداد خانه نیاز داریم. ما خیلی اوقات نمیتوانیم از لحظه اول مشخص کنیم که به چه تعداد خانه نیاز داریم. به همین خاطر در خیلی برنامهها مجبوریم که از ابتدا تعداد خانهها را مشخص نکنیم.
به همین منظور از collectionها استفاده میکنیم. هر مجموعهایی میتواند یک کالکشن باشد. کالکشنها به ما اجازه میدهند که هرتعداد دادهایی را بدون محدودیت ذخیره کنیم و نکته مهم این است که هر زمان که به خانهایی احتیاجی نداشتیم فضای گرفته شده را میتوانیم پس دهیم. از بین کالکشنها در این جلسه با list ها آشنا میشوید. لیستها یک نوع خاص از کالکشنها هستند. در واقع یک اینترفیس به نام لیست در جاوا داریم و نمیتوانیم مستقیما از خودش فضایی ایجاد کنیم. اینترفیسها را در مبحث شیگرایی توضیح دادیم. این اینترفیس چند فرزند دارد که از جنس کلاس هستند. مثل: ArrayList، Vector و LinkedList . در این دوره ArrayList را به شما عزیزان آموزش میدهیم. تا به شما یاد دهیم که میتوانید در برنامه نویسی در لحظه تعریف یک کالکشن یا مجموعه مشخص نکنید که چه تعداد خانه نیاز دارید و نسبت به رشد برنامه هر تعداد فضا که نیاز دارید ایجاد کنید.
نحوه تعریف آرایههای دو بعدی: در این مثال یک آرایه 15 خانه ایی ایجاد کردیم که دارای 3 سطر و 5 ستون میباشد.
package package1
public class MainClass {
public static void main (string [] args) {
int [][] a = new int[تعداد سطر] [تعداد ستون];
int [][] a = new int[3] [5];
}
}
مقداردهی کردن خانههای آرایه:
package package1
public class MainClass {
public static void main (string [] args) {
Scanner reader = new Scanner (System.in);
int [][] a = new int[2] [3];
for (int i = 0 ; i<2 ; i++) {
for (int j = 0 ; j<3 ; j++) {
system.out.print(“Enter A[“+i+”] [“+j+”] : ” );
a [ i ][ j ] = reader.nexInt();
}
}
for (int i = 0 ; i<2 ; i++) {
for (int j = 0 ; j<3 ; j++) {
system.out.print(a[i][j] + “\t”);
}
System.out.println();
}
}
}
آرایههای دو بعدی دندانه دار: تعداد ستونهای آرایه از ابتدا مشخص نیست.
package package1
public class MainClass {
public static void main (string [] args) {
Scanner reader = new Scanner (System.in);
Random rand = new Random();
int [][] a = new int[3] [];
a[0] = new int [تعداد ستون را برای هر سطر مشخص میکنیم];
a[0] = new int [5];
a[1] = new int [3];
a[2] = new int [10];
for (int i = 0 ; i<3; i++) {
for (int j = 0 ; j< a[i].length ; j++) {
a[i][j] = rand.nextInt(10);
}
}
for (int i = 0 ; i<3; i++) {
for (int j = 0 ; j< a[i].length ; j++) {
system.out.print(a[i][j] + “\t”);
}
}
}
}
نحوه تعریف ArrayList: لیستی از اسامی را با arraylist ایجاد میکنیم. با استفاده از ArrayList میتوانیم لیستی از انواع دادهها ایجاد کنیم.
package package1
import java.util.List;
public class MainClass {
public static void main (string [] args) {
ArrayList<String> nameList = new ArrayLlist<String>();
nameList.add(“Mehdi”);
nameList.add(“Ali”);
nameList.add(“Reza”);
nameList.add(“Mohammad”);
for (int i = 0 ; i < nameList.size() ; i++) {
system.out.println(nameList.get(i));
}
}
}
برای چاپ اطلاعات میتوانیم از foreach استفاده کنیم:
package package1
import java.util.List;
public class MainClass {
public static void main (string [] args) {
ArrayList<String> nameList = new ArrayLlist<String>();
nameList.add(“Mehdi”);
nameList.add(“Ali”);
nameList.add(“Reza”);
nameList.add(“Mohammad”);
for (String item : nameList) {
system.out.println(item);
}
}
}
برای تغییر مقدار یک خانه از متد set استفاده میکنیم:
در این برنامه با استفاده از متد set مقدار خانه 1 را تغییر میدهیم. نام Zahra جایگزین نام Reza میشود.
package package1
import java.util.List;
public class MainClass {
public static void main (string [] args) {
ArrayList<String> nameList = new ArrayLlist<String>();
nameList.add(“Mehdi”);
nameList.add(“Ali”);
nameList.add(“Reza”);
nameList.add(“Mohammad”);
nameList.set(1,”Zahra”);
for (String item : nameList) {
system.out.println(item);
}
}
}
برای حذف یک خانه از متد remove استفاده میکنیم:
nameList.remove(شماره خانه);
nameList.remove(2);
دوست درسمنی عزیز، امیدواریم از این آموزش رایگان لذت برده باشید.
برای یادگیری این مبحث می توانید این درس را دانلود کنید و از فایل ها و ویدئو این بخش استفاده کنید.
شما عزیزان می توانید سوالات خود را در بخش انجمن پرسش و پاسخ مطرح کنید و همچنین منتظر انتقادات و پیشنهادات مفید شما در بخش نظرات هستیم تا ما را در کیفیت بهتر آموزش هایمان یاری کنید.
با امید موفقیت و شادی برای شما دوست درسمنی عزیز
انجمن برنامه نویسان جاوا
نظرات دانشجویان
سلام ممنونم از آموزش خوبتون و خسته نباشید .من آموزش پیشرفته جاوا رو از کدوم قسمت میتونم تهیه کنم؟
سلام جناب قنبری عزیز، دوره پیشرفته هنوز ضبط نشده است ولی در روز های آتی حتما در تلاش هستیم تا دوره های جا مانده را تکمیل کنیم.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.