کالکشن ها در جاوا: آموزش کار با ArrayList به همراه مثال

کالکشن ها در جاوا: آموزش کار با ArrayList به همراه مثال

معرفی ArrayList

یکی از پیاده سازی های List کلاس ArrayList است؛ با استفاده از کلاس ArrayList در جاوا میتونیم عناصر رو به صورت آرایه‌وار نگهداری کنیم؛ در ArrayList میتونیم عناصر رو حذف کنیم، اضافه کنیم یا صدا بزنیم.

تفاوت ArrayList با آرایه ها در جاوا در دینامیکی بودن سایز (طول) ArrayList است، بر خلاف آرایه ها که اندازه ی ثابتی دارن، اندازه ی ArrayList با افزودن یا حذف کردن عناصر تغییر میکنه و میگیم اندازه (size) کلاس ArrayList دینامیکی (dynamically) است.

زمانی که در برنامه بخوایم به عناصر با index به صورت تصادفی دسترسی داشته باشیم از ArrayList استفاده می کنیم.

به تعداد خونه های ArrayList برای نگهداری عناصر ظرفیت (capacity) آرایه لیست گفته میشه، زمانی که ظرفیت پر بشه، به صورت خودکار افزایش پیدا می کنه؛ به تعداد عناصری که در خونه های capacity ذخیره میشن اندازه (size) آرایه لیست میگیم.

در تصویر زیر ساختار یک ArrayList به اندازه n و ظرفیت n+k شرح داده شده است

ساختار لیست به اندازه n و ظرفیت n + k
ساختار لیست به اندازه n و ظرفیت n + k

استفاده از ArrayList

زمانی که بخوایم به عناصر با index به صورت تصادفی دسترسی داشته باشیم ArrayList گزینه ی مناسبی میتونه باشه.

اکثر متد های ArrayList در اینترفیس List تعریف شدن و در ArrayList بازنویسی شدن.

در UML زیر سلسه مراتب ارث بری کلاس ArrayList در جاوا شرح داده شده است.

سلسه مراتب‌ ارث‌بری کلاس ArrayList در جاوا
سلسه مراتب ارث‌بری کلاس ArrayList در جاوا

متد های ArrayList، داخل اینترفیس List تعریف شدن که با پیاده‌سازی ‌List در ArrayList این متد ها بازنویسی میشن.

در زیر نمودار UML کلاس ArrayList و متد های تعریف شده در این کلاس با توضیحاتشون آورده شده است.

java.util.ArrayList
+ArrayList() یک نمونه از ArrayList ایجاد می کنه.
+ArrayList(c: Collection<? extends E>) یک نمونه از ArrayList ایجاد می کنه و اعضای کالکشن c رو بهش اضافه می کنه.
+ArrayList(capacity: int) یک نمونه از ArrayList با ظرفیت اولیه ی مشخص ایجاد میکنه.
+trimToSize(): void ظرفیت ArrayList رو به تعداد عناصر (سایز)ArrayList کاهش میده.

در مثال زیر میخوایم به استفاده از ArrayList و متد های توضیح داده شده در List بپردازیم.

List<String> cities = new ArrayList<>();
cities.add("Arak");
cities.add("Tehran");
cities.add("Mashhad");
cities.add("Hamedan");
cities.add("Sanandaj");
cities.add(0, "Kermanshah");
cities.add(3, "Rasht");

System.out.println("A list of cities in arraylist: ");
System.out.println(list);

System.out.println(list.remove(4) + " removed from list");

System.out.println("Now cities in arraylist are ");

System.out.println(cities);

        

در مثال زیر با حلقه ی for به پیمایش در ArrayList می پردازیم.

List<Integer> list = new ArrayList<>();
list.add(8);
list.add(21);
list.add(12);
list.add(14);
list.add(32);
list.add(10);
list.add(30);

System.out.println("The size of list is " + list.size());

System.out.println("List of numbers: ");

for(int i=0; i<list.size(); i++)
   System.out.print(list.get(i) + " ");
        

پیچیدگی زمان متد های ArrayList

در این قسمت به پیچیدگی زمان متد های ArrayList می پردازیم، در جدول زیر پیچیدگی زمان این متد ها در بدترین حالت (worst case) شرح داده شده است.

ArrayList
متد پیچیدگی زمان (Time Complexity)
add(E): boolean O(n)/O(1) (amortized)
add(int, E): void O(n)
get(int): E O(1)
remove(int): E O(n)
set(int, E): E O(1)
contains(Object): boolean O(n)

خلاصه

  • از ArrayList برای دسترسی به عناصر با index به صورت تصادفی استفاده میکنیم.
  • اکثر متد های ArrayList در اینترفیس List تعریف شده اند.

بازخورد و دیدگاه‌ ها

اولین نفری باشید که در این صفحه نظر می‌دهید

notifications برای اطلاع از جدیدترین مطالب و پست های مرتبط، عضو کانال تلگرام ما بشید.

arrow_drop_up
کپی شد!