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) شده باشند.
