چگونه از ArrayList در جاوا استفاده کنیم؟
ArrayList در جاوا یک آرایه برای اهداف کلی و با سایز متغیر است. در واقع این تابع امکاناتی که از یک آرایه به طور کل انتظار میرود را به بیانی دیگر ارائه میدهد. این قابلیتها عبارتند از؛ دسترسی به عناصر با استفاده از شاخص، اضافه کردن، حذف کردن و بروزرسانی عناصر، تغییر سایز دینامیک، تکرار عناصر و .... که اغلب آنها برای استفاده عمومی منظور شدهاند.
چند نوع آرایه دیگر وجود دارد که برای اهداف خاصی در نظر گرفته شدهاند که عبارتند از:
- LinkedList: از ورود و حذف سریع با استفاده از شاخصهای میانجی پشتیبانی میکند.
- Vector: مشابه ArrayList است با این تفاوت که همگامسازی میشود و برای کاربردهای چند رشتهای به کار میرود.
- Stack: مشابه اولین ورود آخرین خروج عمل میکند و در واقع تابع گستردهتر Vector است پس همگامسازی شده است.
توضیح درباره این آرایههای خاص در این مقاله نمیگنجد و ما به ایجاد و استفاده یک ArrayList با هدف استفاده عمومی میپردازیم.
ایجاد یک ArrayList
ایجاد این آرایه کار سادهای است و با یک دستور ساده امکانپذیر است که در ادامه خواهید دید:
1ArrayList alist = new ArrayList();
اگر در ابتدا بدانید که لیست آرایه شما چند آیتم را در بر خواهد گرفت میتوانید ظرفیت اولیه را مشخص کنید. این ظرفیت اولیه تنها نشانهای برای تخصیص حافظه است وگرنه لیست آرایه محدودیتی در استفاده از آیتم ندارد. اگر شما ظرفیت اولیه را بدانید و آن را مشخص کنید ممکن است کمی در کارایی و سرعت پیشرفت کنید.
1ArrayList alist = new ArrayList(20);
اضافه کردن آیتم در انتهای ArrayList
پرکردن لیست آرایه تقریبا کار سادهای است. تنها کافی است از ()add استفاده کنید تا یک آیتم را به انتهای لیست اضافه نمایید. به مثال زیر توجه نمایید:
1ArrayList alist = new ArrayList();
2alist.add("apple");
3alist.add("banana");
4alist.add("cantaloupe");
5alist.add("orange");
6System.out.println(alist);
7# prints
8[apple, banana, cantaloupe, orange]
برای یافتن اینکه چه تعداد آیتم در لیست دارید میتوانید از دستور ()size استفاده کنید.
1System.out.println("Number of elements in the arraylist: " + alist.size());
2# prints
3Number of elements in the arraylist: 4
اضافه کردن آیتم در خانه مشخص
میخواهید آیتمی در یک خانه دلخواه اضافه کنید؟ کافی است در قسمت اول عدد آن خانه را وارد کنید:
1alist.add(3, "grapes");
2System.out.println(alist);
3# prints
4[apple, banana, cantaloupe, grapes, orange]
اضافه کردن چندین آیتم
شما میتوانید هر آیتمی را از دسته بندی جاوا به لیست اضافه کنید. ArrayList نوع خاصی از جنس لیست دارد، در ادامه به روشی جهت ساختن لیست از گروهی از آیتمها با استفاده از دستور ()Arrays.asList میپردازیم.
1List items = Arrays.asList("pear", "cherry");
2alist.addAll(items);
3System.out.println(alist);
4# prints
5[apple, banana, cantaloupe, grapes, orange, pear, cherry]
همچنین میتوانید اندیس خانه مورد نظرتان را در ابتدای دستور وارد کنید تا آیتمها را از همان خانه اضافه کنید.
دسترسی به آیتمها
اگر شما اندیس خانه آیتم مورد نظر خود را بدانید میتوانید با استفاده از دستور ()get آیتم مورد نظر را بازیابی کنید.
1String item = alist.get(2);
2System.out.println("Item at index 2 is: " + item);
3# prints
4Item at index 2 is: cantaloupe
پیدا کردن آیتمها
اگر اندیس خانه آیتم مورد نظر خود را ندانید چه؟ میتوانید از دستور ()indexOf استفاده کنید تا ببینید آیتم مورد نظر در لیست هست یا خیر و سپس با دستور return آن را بازیابی کنید.
1System.out.println(alist);
2int index = alist.indexOf("orange");
3if ( index < 0 )
4 System.out.println("Item \"orange\" not found");
5else
6 System.out.println("Item \"orange\" found at index " + index);
7# prints
8[apple, banana, cantaloupe, grapes, orange, pear, cherry]
9Item "orange" found at index 4
اگر آیتم مورد نظر در لیست وجود نداشته باشد، آنگاه دستور ()indexOf عدد -1 را بازمیگرداند.
1index = alist.indexOf("grape");
2if ( index < 0 )
3 System.out.println("Item \"grape\" not found");
4else
5 System.out.println("Item \"grape\" found at index " + index);
6# prints
7Item "grape" not found
تکرار یک لیست
یکی از رایجترین کاربردهای ArrayList تکرار یک آیتم است. این کار به چند طریق امکان پذیر است که به یک نمونه ساده آن اشاره خواهیم کرد. مثال زیر یکی از سادهترین روشهاست که میتوانید آیتمها را برای فرآیندهای مورد نظرتان استخراج کنید:
1for (String fruit : alist) {
2 System.out.println("Found fruit \"" + fruit + "\"");
3}
4# prints
5Found fruit "apple"
6Found fruit "banana"
7Found fruit "cantaloupe"
8Found fruit "grapes"
9Found fruit "orange"
10Found fruit "pear"
11Found fruit "cherry"
جایگزین کردن آیتمها
ما نیاز خواهیم داشت آیتمهای ناخواسته را با آیتمهای مورد نظر جایگزین کنیم. برای این منظور میتوان از دستور ()Set با اندیس مورد نظر استفاده کرد.
1alist.set(5, "pineapple");
2System.out.println(alist);
3# prints
4[apple, banana, cantaloupe, grapes, orange, pineapple, cherry]
حذف کردن آیتمها
اگر اندیس آیتم را بدانید میتوانید از دستور ()remove استفاده کنید همچنین در صورت عدم اطلاع از اندیس میتوانید آیتم را مشخص کرده و دستور دهید اگر این آیتم پیدا شد حذف شود، در این صورت تابع عبارت True را باز میگرداند.
1String fruit = alist.remove(2);
2System.out.println("Removed element at 2: " + fruit);
3# prints
4Removed element at 2: cantaloupe
1fruit = "grapes";
2System.out.println("Remove " +fruit+ " from the list? " + alist.remove(fruit));
3# prints
4Remove grapes from the list? true
اگر این مطلب مورد توجه شما واقع شده است، آموزش های زیر برای شما مفید خواهند بود:
- آموزش برنامه نویسی جاوا از صفر تا صد
- ۱۹ سوال رایج در مصاحبههای شغلی جاوا
- کدنویسی جاوا در پلتفرم اندروید
#
.add چرا کار نمیکنه؟ و کاش از چند تایپ مختلف تو توضیح آرایه ها استفاده میکردین که اشنا بشیم