آموزش Arraylist در جاوا به زبان ساده
ArrayList در جاوا کلاسی محسوب میشود که بخشی از چارچوب Java Collection است. این کلاس به بسته java.util تعلق دارد و عملکرد آرایههای پویا مانند را ارائه میدهد. اگرچه این نوع آرایه ممکن است در مقایسه با آرایههای استاندارد کندتر باشد، اما ArrayList در سناریوهایی که نیاز به دستکاری مکرر آرایه است سودمند واقع میشود. در این مطلب از مجله مکتوب قصد داریم که در رابطه با ArrayList در جاوا توضیحاتی کامل ارائه کنیم. پس با ما همراه شوید.
تعریف ArrayList در جاوا چیست؟
ArrayList با استفاده از رابط List پیادهسازی میشود و ویژگیهای متعددی را ارائه میدهد که با آرایههای معمولی در دسترس نیستند. روشهایی را برای افزودن، حذف و اصلاح عناصر در لیست و همچنین انجام عملیاتی مانند جستجو، مرتبسازی و تکرار بر روی عناصر ارائه میدهد. ماهیت پویا ArrayList به آن اجازه خواهد داد تا با اضافه شدن یا حذف عناصر به طور خودکار اندازه خود را تغییر دهد.
به طور کلی، Java ArrayList نوعی کلاس همهکاره و قدرتمند است که کار با آرایهها را با ارائه تغییر اندازه پویا و طیف گستردهای از متدهای راحت برای دستکاری، ساده میکند. تصویر زیر نحوه عملکرد این کلاس آرایه را ارائه میدهد:
با استفاده از کلاس ArrayList میتوان آرایههایی باقابلیت تغییر اندازه در جاوا ایجاد کرد. برخلاف آرایههای سنتی، نیازی به تعیین اندازه ArrayList در حین اعلان وجود ندارد.
پیشنهاد مطالعه: آشنایی با مفهوم HashMap در جاوا
مثالی از ArrayList در جاوا
برای درک بهتر ArrayList در زیر مثالی ارائه شده است:
// Java program to demonstrate the
// working of ArrayList
import java.io.*;
import java.util.*;
class ArrayListExample {
public static void main(String[] args)
{
// Size of the
// ArrayList
int n = 5;
// Declaring the ArrayList with
// initial size n
ArrayList<integer> arr1 = new ArrayList<integer>(n);
// Declaring the ArrayList
ArrayList<integer> arr2 = new ArrayList<integer>();
// Printing the ArrayList
System.out.println("Array 1:" + arr1);
System.out.println("Array 2:" + arr2);
// Appending new elements at
// the end of the list
for (int i = 1; i
</integer></integer></integer></integer>
خروجی کد فوق به صورت زیر است:
در این مثال، دو شی ArrayList در جاوا ایجاد میکنیم: arr1 و arr2. در ابتدا arr1 با ظرفیت اولیه 5 مقداردهی اولیه میشود، در حالی که arr2 یک ArrayList خالی است. پس از آن، اعداد 1 تا 5 را پیمایش کرده و با استفاده از متد add() اعداد را به هر دو ArrayLists اضافه میکنیم. در نهایت، محتویات هر دو ArrayLists را قبل و بعد از افزودن عناصر چاپ میکنیم. همانطور که میبینید، ArrayList به طور خودکار اندازه خود را تغییر میدهد تا عناصر اضافه شده را در خود جای دهد. در ابتدا، هر دو ArrayList خالی هستند، اما پس از اضافه کردن عناصر، اعداد 1 تا 5 را به ترتیب در برمیگیرند.
ویژگی های ArrayList
در اینجا ویژگیهای مهم ArrayList در جاوا آورده شده است:
- وراثت و پیادهسازی رابط: ArrayList کلاس AbstractList را به ارث میبرد و رابط List را پیادهسازی میکند. این به آن اجازه میدهد تا به عملیات و متدهای رایج لیست دسترسی داشته باشد.
- تغییر اندازه پویا: برخلاف آرایهها، اندازه یک ArrayList ثابت نیست. اگر مجموعه بزرگ شود، به طور خودکار اندازه آن را افزایش میدهد و اگر عناصر از مجموعه حذف شوند، کوچک میشود. این تغییر اندازه پویا کار با مقادیر مختلف داده را راحت میکند.
- دسترسی تصادفی: ArrayList امکان دسترسی تصادفی به عناصر را فراهم میکند. این بدان معنی است که عناصر را میتوان مستقیماً با استفاده از موقعیت اندیس آنها دسترسی داشت.
- کلاسهای Wrapper: ArrayList نمیتواند به طور مستقیم انواع اولیه مانند «int» ،«char» و غیره را ذخیره کند. برای چنین مواردی به کلاسهای wrapper نیاز دارد. به عنوان مثال، به جای استفاده از«int»، از «Integer» به عنوان نوع عنصر در ArrayList استفاده میشود.
- همگامسازی: ArrayList به طور پیشفرض همگامسازی نمیشود، به این معنی که از نظر رشتهای ایمن نیست. اگر به رفتار ایمن رشته نیاز باشد، میتوان از کلاس همگام «Vector» به عنوان جایگزینی برای ArrayList استفاده کرد.
از تصویر زیر هم میتوان فهمید مهمترین ویژگیهای ArrayList را فهمید:
به طور خلاصه، کلاسهای ذکر شده در تصویر رابط List را با عملکردهای خاص پیادهسازی میکنند:
- AbstractList: پایهای برای پیادهسازی لیستهای غیرقابل تغییر فراهم میکند. زیر کلاسها فقط باید متدهای get() و size() را پیادهسازی کنند.
- CopyOnWriteArrayList: این کلاس یک گونه ایمن از ArrayList است. اصلاحات با ایجاد یک کپی تازه از آرایه زیربنایی انجام شده و از اصلاحات همزمان مطمئن میشود.
- AbstractSequentialList: این کلاس AbstractList را گسترش میدهد و یک پیادهسازی اسکلتی برای لیستهای دسترسی متوالی غیرقابل تغییر ارائه میدهد. زیر کلاسها فقط باید متدهای get() و size() را پیادهسازی کنند.
این کلاسها اهداف مختلفی مانند پیادهسازی لیستهای غیرقابل تغییر، ارائه تغییرات ایمن در رشته و پشتیبانی از لیستهای دسترسی متوالی غیرقابل تغییر را انجام میدهند.
پیشنهاد مطالعه: آموزش hibernate در جاوا
سازنده ها در ArrayList
سازندهها در ArrayList یا java arraylist constructor برای ایجاد نمونههایی از کلاس ArrayList با گزینههای اولیه متفاوت استفاده میشوند. در اینجا سازندههای موجود در کلاس ArrayList هستند:
1. ArrayList
این سازنده یک ArrayList خالی بدون عناصر اولیه ایجاد میکند. میتوان از آن به صورت زیر استفاده کرد:
ArrayList<object> arr = new ArrayList();</object>
2. ArrayList(Collection c)
این سازنده یک ArrayList در جاوا با عناصر مجموعه مشخص شده c ایجاد میکند. میتوان از آن به صورت زیر استفاده کرد:
Collection<object> collection = new ArrayList();
// Add elements to the collection
ArrayList<object> arr = new ArrayList(collection);
</object></object>
3. ArrayList(int capacity)
این سازنده یک ArrayList با ظرفیت اولیه مشخص شده ایجاد میکند. capacity یا ظرفیت نشان دهنده تعداد عناصری است که ArrayList می واند قبل از تغییر اندازه نگه دارد. میتوان از آن به صورت زیر استفاده کرد:
int initialCapacity = 10;
ArrayList<object> arr = new ArrayList(initialCapacity);
</object>
این سازندهها انعطاف پذیری را در ایجاد اشیاء ArrayList بر اساس نیازهای مختلف فراهم میکنند. میتوان یک ArrayList خالی ایجاد و آن را با عناصر یک مجموعه مقداردهی اولیه کرد یا ظرفیت اولیه را برای تخصیص کارآمد حافظه تخصیص داد.
متد های ArrayList در جاوا
در فهرست زیر برخی از متدهای ArrayList در جاوا آورده شده است:
- add(int index, Object element): عنصر مشخص شده را در مکان مشخص شده در لیست درج میکند.
- add(Object o): عنصر مشخص شده را به انتهای لیست اضافه میکند.
- addAll(Collection C): همه عناصر را از یک مجموعه خاص به انتهای لیست اضافه میکند.
- addAll(int index, Collection C): همه عناصر را از یک مجموعه خاص در لیست قرار میدهد و از اندیس مشخص شده شروع میشود.
- clear(): تمام عناصر را از لیست حذف میکند.
- clone(): یک کپی کمعمق از ArrayList را برمیگرداند.
- contain(Object o): بررسی میکند که آیا لیست حاوی عنصر مشخص شده است یا خیر.
- sureCapacity(int minCapacity): در صورت لزوم ظرفیت ArrayList را افزایش میدهد.
- forEach(Consumer<? super E> action): عمل داده شده را برای هر عنصر لیست انجام میدهد.
- get(int index): عنصر را در موقعیت مشخص شده در لیست برمیگرداند.
- indexOf(Object o): اندیس اولین رخداد عنصر مشخص شده یا -1 را در صورت یافت نشدن برمیگرداند.
- isEmpty(): بررسی میکند که آیا لیست خالی است.
- lastIndexOf(Object o): اندیس آخرین رخداد عنصر مشخص شده یا -1 را در صورت یافت نشدن برمیگرداند.
- listIterator(): یک تکرارکننده لیست را بر روی عناصر موجود در لیست برمیگرداند.
- listIterator(int index): یک تکرارکننده لیست را بر روی عناصر موجود در لیست برمیگرداند که از موقعیت مشخص شده شروع میشود.
- remove(int index): عنصر را در موقعیت مشخص شده از لیست حذف میکند.
- remove(Object o): اولین رخداد عنصر مشخص شده را در صورت وجود از لیست حذف میکند.
- removeAll(Collection c): تمام عناصر موجود در مجموعه مشخص شده را از لیست حذف میکند.
- removeIf(Predicate filter): تمام عناصری که قید داده شده را برآورده میکنند از لیست حذف میکند.
- removeRange(int fromIndex, int toIndex): محدودهای از عناصر را از لیست حذف میکند.
- retainAll(Collection<?> c): فقط عناصر موجود در لیست موجود در مجموعه مشخص شده را حفظ میکند.
- set(int index, E element): عنصر را در مکان مشخص شده در لیست با عنصر مشخص شده جایگزین میکند.
- size(): تعداد عناصر موجود در لیست را برمیگرداند.
- spliterator(): یک Spliterator روی عناصر موجود در لیست ایجاد میکند.
- subList(int fromIndex, int toIndex): نمای بخشی از لیست را بین فهرست مشخص شده fromIndex (شامل) و toIndex (انحصاری) برمیگرداند.
- toArray(): آرایهای را برمیگرداند که حاوی تمام عناصر موجود در لیست است.
- toArray(Object[] O): آرایهای را برمیگرداند که تمام عناصر موجود در لیست را به ترتیب یکسان دارد.
- trimToSize(): ظرفیت ArrayList را به اندازه فعلی لیست کاهش میدهد.
این متدها عملیات مختلفی را برای دستکاری و دسترسی به عناصر در یک ArrayList ارائه میکنند.
پیشنهاد مطالعه: آموزش قدم به قدم ساخت ربات تلگرام با جاوا
کاربردهای ArrayList در جاوا
از مهمترین موارد استفاده از ArrayList در جاوا میتوان به موارد زیر اشاره کرد:
- افزودن عناصر
- تغییر عناصر
- حذف عناصر
- پیمایش عناصر
- دریافت عناصر
- مرتب سازی عناصر
- بازیابی اندازه ArrayList
در ادامه نمونه مثال از کار با arraylist در جاوا (java arraylist example) ارائه خواهد شد.
پیشنهاد مطالعه: آموزش مفهوم Final در جاوا + مثال عملی
افزودن عناصر با ArrayList
برای افزودن عناصر به ArrayList در جاوا، میتوان از متد add() استفاده کرد. متد add() میتواند عملیاتهای مختلفی را بر اساس پارامترهای ارائه شده انجام دهد. دو رویکرد متفاوت برای استفاده از این متد جود دارد:
1- add(Object element): این متد برای افزودن یک عنصر در انتهای ArrayList استفاده میشود. مانند مثال زیر:
ArrayList<string> list = new ArrayList();
list.add("apple");
list.add("banana");
list.add("orange");
</string>
در مثال فوق سح عنصر نام برده به انتهای لیست اضافه میشوند.
2- add(int index, Object element): این متدبرای افزودن عنصر در اندیسی خاص در ArrayList استفاده میشود. عناصر موجود برای تطبیق با عنصر جدید جابجا خواهند شد. مثال زیر این مفهوم را نشان میدهد:
ArrayList<integer> numbers = new ArrayList();
numbers.add(0, 10);
numbers.add(1, 20);
numbers.add(2, 30);
</integer>
در مثال فوق، عناصر 10، 20 و 30 به اعداد ArrayList در اندیسهای خاص اضافه میشوند. ArrayList حاصل [10، 20، 30] خواهد بود. با استفاده از این متدهای add() میتوان به راحتی عناصر را در یک ArrayList در موقعیت مورد نظر اضافه کرد.
تغییر عناصر با ArrayList
برای تغییر عناصر در یک ArrayList در جاوا، میتوان از متد set() استفاده کرد. متد set() یک اندیس و عنصر به روز شدهای را میگیرد که باید در آن اندیس درج شود. مثال زیر این مفهوم را نشان میدهد:
import java.util.*;
// main class
class GFG {
// Main driver method
public static void main(String args[])
{
// Creating an Arraylist object of string type
ArrayList<string> al = new ArrayList();
// Adding elements to Arraylist
// Custom input elements
al.add("welcome");
al.add("Maktabkhooneh");
// Adding specifying the index to be added
al.add(1, "to");
// Printing the Arraylist elements
System.out.println("Initial ArrayList " + al);
// Setting element at 1st index
al.set(1, "to");
// Printing the updated Arraylist
System.out.println("Updated ArrayList " + al);
}
}
</string>
خروجی کد فوق به صورت زیر است:
در مثال فوق ابتدا یک لیست ArrayList ایجاد شده و عناصری را به آن اضافه خواهد شد. سپس از متد set() برای تغییر عنصر در اندیس 1 به “to” استفاده شده است. در نهایت، ArrayList به روز شده چاپ خواهد شد.
پیمایش عناصر با ArrayList در جاوا
برای پیمایش عناصر یک لیست از طریق یک ArrayList در جاوا، میتوان از حلقه for در ترکیب با متد get() برای دسترسی به عناصر بر اساس اندیس استفاده کرد که مثال زیر این مفهوم را بیان میکند:
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String args[])
{
// Creating an Arraylist of string type
ArrayList<string> al = new ArrayList();
// Adding elements to ArrayList
// using standard add() method
al.add("welcome");
al.add("to");
al.add(1, "maktabkhooneh");
// Using the Get method and the
// for loop
for (int i = 0; i
</string>
خروجی مثال فوق به صورت زیر است:
در مثال فوق، یک لیست ArrayList ایجاد و عناصری به آن اضافه شده است. سپس، با استفاده از یک حلقه for با متد get() عناصر پیمایش شدهاند تا بر اساس اندیس بازیابی شوند و همچنین یک حلقه for تقویتشده برای دسترسی مستقیم به هر عنصر به کار رفته است.
پیشنهاد مطالعه: معرفی 12 تا از بهترین کتابهای آموزش جاوا
تفاوت list و arraylist در جاوا چیست؟
به طور خلاصه تفاوت list و arraylist در جاوا به صورت زیر موارد زیر است:
- «list» نوعی رابط است که مجموعهای مرتب از عناصر را نشان میدهد، در حالی که «ArrayList» کلاسی است که رابط List را پیاده سازی میکند.
- «list»یک رابط کلی برای کار با مجموعههای مرتب شده ارائه میدهد، در حالی که «ArrayList» یک پیادهسازی خاص است که یک لیست مبتنی بر آرایه با قابلیت تغییر اندازه را ارائه میدهد.
- «ArrayList» دسترسی سریع تصادفی به عناصر را بر اساس شاخصهای آنها ارائه میدهد، در حالی که سایر پیادهسازیهای «List» ممکن است ویژگیهای عملکرد متفاوتی داشته باشند.
- «ArrayList» ممکن است از حافظه بیشتری نسبت به سایر پیادهسازیهای «List» استفاده کند، زیرا در داخل از آرایهای استفاده میکند که باید اندازه آن تغییر کند.
- «list» به انعطافپذیری و جداسازی کد اجازه میدهد زیرا میتوان از آن برای اعلام متغیرها یا پارامترها بدون مشخص کردن اجرای مشخص استفاده کرد.
ذکر این نکته حائز اهمیت است که «ArrayList» تنها یکی از پیادهسازیهای متعدد رابط «List» است و بسته به نیاز و مورد استفاده، پیادهسازیهای دیگر ممکن است مناسبتر باشند.
مزایای ArrayList
از مهمترین مزایای ArrayList در جاوا میتوان موارد زیر را نام برد:
- اندازه پویا: ArrayList میتواند بهصورت پویا رشد کرده و کوچک شود و امکان اضافه کردن و حذف آسان عناصر را در صورت نیاز فراهم میکند.
- سهولت استفاده: استفاده از ArrayList ساده است و آن را در بین توسعهدهندگان جاوا محبوب میکند.
- دسترسی سریع: ArrayList دسترسی سریع به عناصر با اندیس آنها را فراهم میکند.
- مجموعه مرتبشده: ArrayList ترتیب عناصر را حفظ کرده و امکان بازیابی و پیمایش آسان به ترتیب اضافه شدن آنها را فراهم میکند.
- پشتیبانی از مقادیر null: ArrayList میتواند مقادیر null را ذخیره کند و برای مواردی که عدم وجود یک مقدار نیاز به نمایش دارد، مناسب است.
معایب ArrayList
از مهمترین معایب ArrayList در جاوا میتوان موارد زیر را ذکر کرد:
- کندتر از آرایهها: ArrayList به دلیل نیاز به تغییر اندازه و جابجایی عناصر میتواند از آرایهها برای عملیات خاصی مانند درج عناصر در وسط لیست کندتر باشد.
- افزایش استفاده از حافظه: ArrayList به حافظه بیشتری نسبت به آرایهها نیاز خواهد داشت زیرا نیاز به تغییر اندازه پویا و حفظ ظرفیت خود دارد.
- Thread-safe نیست: ArrayList امن نیست، به این معنی که تغییرات همزمان توسط چندین رشته میتواند منجر به ناسازگاری یا خطا در دادهها شود
- کاهش عملکرد: با افزایش تعداد عناصر در یک ArrayList، عملیات خاصی مانند جستجوی عناصر یا درج عناصر در وسط لیست میتواند به دلیل تغییر اندازه آرایه و تغییر عنصر کندتر شود.
سخن پایانی
ArrayList راحتی یک آرایه پویا با اندازه پویا، مجموعه سفارش داده شده و سهولت استفاده را فراهم میکند. با این حال، از نظر کارایی و استفاده از حافظه نسبت به آرایهها دارای معایبی است و در محیطهای چند رشتهای به احتیاط بیشتری نیاز دارد. در این مطلب از مکتوب توضیحات کاملی از ArrayList در جاوا به همراه مثال و کد مربوطه ارائه شد. به امید اینکه این مطلب برای شما مفید بوده باشد.
آموزش جاوا
اگر به فکر یادگیری جاوا از صفر یا به فکر ارتقای مهارتهای خود در جاوا هستید بهترین و مقرون بهصرفهترین روش انجام این کار استفاده از دورههای آموزشی است. با استفاده از دورههای آموزش جاوا میتوانید یادگیری جاوا را از صفر شروع کرده یا مهارتهای خود را برای تبدیلشدن به یک فرد حرفهای ارتقا بدهید. برای این منظور در مکتب خونه انواع دوره آموزش جاوا با رویکردهای مختلفی ارائه شده است که هماکنون میتوانید از طریق صفحه آموزش جاوا به این دورههای آموزشی دستیابید.
علاوه بر جاوا برای سایر زبانهای برنامه نویسی دیگر مانند جاوا اسکریپت، پایتون، سی شارپ و غیره نیز انواع دوره آموزشی کامل و جامع وجود دارد که از طریق صفحه آموزش برنامه نویسی میتوانید به آنها دسترسی داشته باشید.
منبع: geeksforgeeks