جلسه شماره 91رایگان

Collection Intro

00:14:16

توضیحات جلسه

🎥 آموزش جاوا، قسمت هشتاد و چهارم بوت‌کمپ رایگان جاوا 📚 معرفی Java Collections – اولین قدم در دنیای کالکشن‌ها در این ویدیو اولین قسمت از پلی‌لیست کالکشن‌ها در جاوا رو با هم بررسی می‌کنیم. توی این جلسه یاد می‌گیریم کالکشن‌ها چیستند، چرا مهم‌اند و انواع مختلف اون‌ها چه کاربردی دارند. 💡 در این ویدیو بررسی می‌کنیم: 📝 تعریف و مفهوم کالکشن‌ها با هم مرور می‌کنیم کالکشن‌ها چیه و چرا استفاده از اون‌ها باعث می‌شه کدهای جاوا تمیزتر و قابل‌اعتمادتر بشه. ⚡ ویژگی‌های Java Collection Framework بررسی مزایا و امکانات کلیدی کالکشن‌ها، مثل داده‌های پویا، آماده‌سازی الگوریتم‌ها و بهبود خوانایی کد. 🔍 بررسی انواع کالکشن‌ها آشنایی با List، Set، Map و Queue و کاربرد هر کدوم در پروژه‌ها. ✅ مروری کلی در پایان، یک مرور سریع داریم تا نکات کلیدی بهتر تو ذهنت تثبیت بشه. 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتید می‌تونید داخل این گروه بپرسید تا خودم یا مربی‌های گروه کمکتون کنیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار.

جزوه و مستندات

مفاهیم کلیدی

  • Java Collection Framework JCF

یک چارچوب یا Framework شامل مجموعه‌ای از Interfaceها و Classهای آماده است که ساختارهای داده‌ای استانداردی را برای ذخیره و مدیریت بهینه گروهی از اشیا یا Objects در اختیار برنامه‌نویس قرار می‌دهد.

  • Interface List

اینترفیسی است که اجازه ذخیره داده‌ها با رعایت ترتیب ورود یا Ordered را می‌دهد. همچنین امکان ذخیره داده‌های تکراری یا Duplicate در آن وجود دارد.

  • Interface Set

ساختاری است که فقط مقدارهای منحصربه‌فرد یا Unique را در خود نگه می‌دارد و اجازه ورود داده‌های تکراری را نمی‌دهد. برخی از پیاده‌سازی‌های آن، ترتیبی برای ذخیره‌سازی تضمین نمی‌کنند.

  • Interface Map

ساختاری است که داده‌ها را به‌صورت جفت‌های کلید-مقدار یا Key-Value Pair ذخیره می‌کند. در این ساختار، کلیدها باید منحصربه‌فرد باشند و هر کلید به یک مقدار خاص اشاره می‌کند.

  • Interface Queue و Deque

ساختارهای مربوط به صف هستند که معمولاً بر اساس منطق FIFO، یعنی اولین ورودی، اولین خروجی، کار می‌کنند. Deque نسخه پیشرفته‌تری است که اجازه ورود و خروج داده از هر دو سمت، یعنی ابتدا و انتهای صف، را می‌دهد.

  • Dynamic Resizing

قابلیتی در کالکشن‌ها است که برخلاف آرایه‌های معمولی با اندازه ثابت یا Fixed Size، اجازه می‌دهد با اضافه شدن داده‌های جدید، فضای حافظه به‌صورت خودکار افزایش یابد.

  • Utility Class

کلاس‌هایی مانند Collections هستند که شامل متدهای static آماده برای انجام عملیات رایج مانند جستجو یا Search و مرتب‌سازی یا Sort روی کالکشن‌ها هستند.

موارد مصاحبه ای

  • تفاوت اصلی بین Array و Collection Framework چیست؟

آرایه‌ها دارای اندازه ثابت یا Fixed Size هستند و پس از تعریف نمی‌توان سایز آن‌ها را تغییر داد. اما کالکشن‌ها به‌صورت پویا یا Dynamic، با توجه به حجم داده‌ها تغییر سایز می‌دهند.

  • چه زمانی از Set به جای List استفاده می‌کنیم؟

زمانی که هدف ما جلوگیری از ذخیره داده‌های تکراری باشد و بخواهیم مطمئن شویم تمام عناصر موجود در مجموعه منحصربه‌فرد یا Unique هستند.

  • تفاوت ArrayList و Vector در چیست؟

هر دو رفتار مشابهی دارند، اما متدهای کلاس Vector به‌صورت Synchronized طراحی شده‌اند و به همین دلیل Thread-safe است. در مقابل، ArrayList به دلیل سرعت بالاتر، برای محیط‌های تک‌رشته‌ای انتخاب رایج‌تری است.

  • ساختار داده TreeMap چه ویژگی خاصی دارد؟

این ساختار داده به‌صورت خودکار کلیدها را بر اساس نظم طبیعی آن‌ها، مانند حروف الفبا یا اعداد، مرتب یا Sorted نگه می‌دارد.

  • نقش اینترفیس Iterator چیست؟

این اینترفیس ابزاری استاندارد برای پیمایش یا Iteration میان عناصر یک کالکشن فراهم می‌کند؛ بدون اینکه برنامه‌نویس درگیر جزئیات پیاده‌سازی آن ساختار داده شود.

سناریو کاربردی

در برنامه‌نویسی سنتی، اگر به یک آرایه با طول متغیر نیاز داشتیم، باید به‌صورت دستی کدی می‌نوشتیم که وقتی ظرفیت آرایه پر می‌شد، یک آرایه بزرگ‌تر ایجاد کند و تمام عناصر قبلی را به آن منتقل کند. این کار هم زمان‌بر است و هم احتمال خطا در مدیریت حافظه را افزایش می‌دهد.

با استفاده از Java Collection Framework و کلاسی مانند ArrayList، دیگر نیازی به نوشتن این الگوریتم‌های تکراری نیست. شما فقط از متد add استفاده می‌کنید و جاوا در پشت صحنه، تمام عملیات تغییر سایز یا Resizing و مدیریت حافظه را به‌صورت بهینه انجام می‌دهد.

این موضوع باعث افزایش سرعت توسعه یا Development Speed و بازاستفاده‌پذیری کد یا Code Reusability می‌شود.

بیشتر بدانید

  • IDE Tip

در اکثر محیط‌های توسعه مانند IntelliJ IDEA، استفاده از ابزارهای تولید خودکار کد می‌تواند به پیاده‌سازی سریع‌تر متدهای equals و hashCode کمک کند. این متدها برای عملکرد درست کالکشن‌هایی مانند HashSet و HashMap حیاتی هستند.

  • Standardization Note

یکی از بزرگ‌ترین مزایای JCF این است که یک زبان مشترک بین برنامه‌نویسان ایجاد می‌کند. وقتی از یک List در متد خود استفاده می‌کنید، هر برنامه‌نویس دیگری در هر جای دنیا دقیقاً می‌داند که چگونه باید با آن کار کند.

  • Performance Tip

برای عملیات جستجوی سریع، HashSet و HashMap به دلیل استفاده از مکانیزم هشینگ یا Hashing عملکرد بسیار بهتری نسبت به لیست‌ها دارند.

  • Legacy Classes

کلاس‌هایی مانند Vector و Hashtable کلاس‌های قدیمی یا Legacy هستند که امروزه کمتر استفاده می‌شوند و معمولاً جایگزین‌های بهینه‌تری در فریمورک کالکشن برای آن‌ها وجود دارد.