Create Dynamic Array | ساخت آرایه پویا
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
Dynamic Array
ساختاری که برخلاف آرایههای معمولی، ظرفیت ثابتی ندارد و با افزایش تعداد دادهها، بهطور خودکار فضا ایجاد میکند.
Capacity
حداکثر ظرفیت فیزیکی فعلی یک آرایه که هنگام تعریف اولیه یا در فرآیند Resize تعیین میشود.
Size
تعداد واقعی عناصری که در حال حاضر درون آرایه ذخیره شدهاند.
Casting
تبدیل نوع یک Object به کلاس خاص (مثل Person) برای دسترسی به متدها و ویژگیهای اختصاصی آن کلاس.
نکات مهم مصاحبهای
تفاوت اصلی بین آرایه معمولی و آرایه پویا چیست؟
آرایه معمولی طول ثابتی دارد و پس از تعریف قابل تغییر نیست؛ اما آرایه پویا با پر شدن فضا، ظرفیت خود را افزایش میدهد.
چرا استفاده از متغیر size به جای جستجوی مقادیر null بهینهتر است؟
جستجو برای یافتن اولین خانه خالی (null) در هر بار درج، مرتبه زمانی O(n) دارد؛ اما با داشتن متغیر size مستقیماً به اندیس مورد نظر دسترسی داریم که مرتبه آن O(1) است.
فرآیند Resize با چه مرتبه زمانی انجام میشود؟
بهدلیل نیاز به کپی کردن تکتک عناصر از آرایه قدیمی به آرایه جدید، این عملیات مرتبه زمانی O(n) دارد.
چرا در پیادهسازی آرایه پویا از نوع Object استفاده میکنیم؟
چون کلاس Object پدر تمام کلاسها در جاوا است و با این کار میتوانیم یک لیست عمومی بسازیم که انواع مختلف داده را پشتیبانی کند.
مثال یا سناریوی کاربردی
در این آموزش، یک سیستم مدیریت افراد پیادهسازی شده است. ابتدا با یک آرایه ثابت از اشیاء Person شروع کردیم.
مشکل این بود که اگر ظرفیت ۱۰تایی تمام میشد، برنامه با خطای ArrayIndexOutOfBoundsException متوقف میشد.
برای حل این مشکل، متدی به نام resize طراحی شد که هر بار ظرفیت پر میشود، آرایهای با طول دو برابر میسازد و دادهها را منتقل میکند.
همچنین برای جلوگیری از ریختن دادههای نامرتبط (مثلاً ریختن اشیاء Car در لیست Person)، مکانیزمی برای بررسی نوع کلاس (Type Safety) با استفاده از getSimpleName اضافه شد.
بیشتر بدانید
نکته فنی
برای بررسی برابری محتوای دو شیء در متدهایی مثل contains، حتماً باید متدهای equals و hashCode در کلاس مورد نظر بازنویسی (Override) شده باشند.
