آموزش رایگان صفر تا صد جاوا (Java) به زبان ساده
-
معرفی جاوا
-
ساخت اولین برنامه: Hello World
-
چاپ متن در جاوا
-
چاپ عدد در جاوا
-
نظرات (Comments) در جاوا
-
متغیرها جاوا
-
نمایش متغیرها (Display Variables) در جاوا
-
تعریف چند متغیر در جاوا (Java)
-
شناسایی متغیرها (Identifiers)
-
معرفی متغیرها با مثالهای واقعی
-
آشنایی با انواع دادهها (Data Types) در جاوا
-
آشنایی با اعداد (Numbers) در جاوا
-
آشنایی با نوع داده بولین (Boolean)
-
کار با کاراکترها و رشتهها در جاوا (Characters and Strings in Java)
-
مثال واقعی برای استفاده از انواع داده در جاوا
-
آشنایی با انواع دادههای غیرابتدایی (Non-Primitive Data Types)
-
آموزش مفهوم Type Casting در جاوا
-
آموزش عملگرها (Operators) در جاوا
-
آشنایی با رشتهها (Strings) در جاوا
-
آشنایی با الحاق رشتهها (String Concatenation)
-
اضافه کردن اعداد و رشتهها در جاوا
-
رشتهها و کاراکترهای خاص در جاوا
-
آشنایی با کلاس Math در جاوا
-
آشنایی با Boolean در جاوا
-
آشنایی با شرطها (Conditions) و دستورات شرطی (If Statements) در جاوا
-
آشنایی با دستور else در برنامهنویسی
-
آموزش عبارت else if در برنامهنویسی
-
آشنایی با عملگر شرطی کوتاه در جاوا (Ternary Operator)
-
آموزش شرطها (If..Else) در برنامهنویسی با مثالهای واقعی
-
آشنایی با Switch Statement در جاوا
-
آشنایی با حلقه While در جاوا
-
حلقه Do/While در جاوا
-
آشنایی با حلقه For در جاوا
-
حلقههای تودرتو (Nested Loops) در جاوا
-
حلقه For-Each در جاوا
-
آموزش دستورات Break و Continue در جاوا
-
آشنایی با آرایهها در جاوا (Java Arrays)
-
آموزش ساده استفاده از حلقهها برای پیمایش آرایهها در جاوا (Java Arrays Loop)
-
آرایههای چندبعدی در جاوا (Java Multi-Dimensional Arrays)
-
معرفی متدها در جاوا (Java Methods)
-
آموزش ساده: پارامترها و آرگومانها در متدهای جاوا (Java Method Parameters)
-
مفهوم بازگشت مقدار در جاوا (Java Return)
-
روش بارگذاری مجدد متدها در جاوا (Java Method Overloading)
-
آشنایی با محدوده متغیرها در جاوا (Java Scope)
-
بازگشت در جاوا (Java Recursion)
-
آشنایی با برنامهنویسی شیءگرا (Object-Oriented Programming یا OOP)
-
برنامهنویسی شیءگرا در جاوا (Java Classes/Objects)
-
آشنایی با ویژگیهای کلاس در جاوا (Java Class Attributes)
-
متدها در جاوا (Java Methods)
-
Constructor در جاوا
-
آشنایی با Modifiers در جاوا (Java Modifiers)
-
مفهوم کپسولهسازی (Encapsulation) در جاوا
-
راهنمای جامع پکیجها (Packages) و API در جاوا
-
وراثت (Inheritance) در جاوا – ساده و قابل فهم
-
پلیمورفیسم (Polymorphism) در جاوا به زبان ساده
-
کلاسهای داخلی (Inner Classes) در جاوا
-
کلاسها و متدهای انتزاعی (Abstract Classes and Methods) در جاوا
-
رابطها (Interfaces) در جاوا
-
آشنایی با Enum در جاوا
-
دریافت ورودی از کاربر در جاوا (Scanner)
-
تاریخ و زمان در جاوا (Java Date and Time)
-
آشنایی با ArrayList در جاوا
-
آشنایی با LinkedList در جاوا
-
مرتبسازی لیست در جاوا (Java List Sorting)
-
آشنایی با HashMap در جاوا
-
آشنایی با HashSet در جاوا
-
آشنایی با Iterator در جاوا
-
کلاسهای بستهبندی (Wrapper Classes) در جاوا
-
استفاده از try...catch برای مدیریت خطاها
-
آشنایی با عبارات منظم (Regular Expressions) در جاوا
-
آشنایی با Threads در جاوا 🚀
-
آشنایی با Lambda Expressions در جاوا
-
مرتبسازی پیشرفته در جاوا
-
آشنایی با کلمه کلیدی assert در جاوا
-
آشنایی با کلمه کلیدی abstract در جاوا
-
آشنایی با کلمه کلیدی boolean در جاوا
-
آشنایی با کلمه کلیدی break در جاوا
-
آشنایی با کلمه کلیدی byte در جاوا
-
آشنایی با کلمه کلیدی case در جاوا
-
آشنایی با کلمه کلیدی catch در جاوا
-
آشنایی با کلمه کلیدی char در جاوا
-
آشنایی با کلمه کلیدی class در جاوا
-
آشنایی با کلمه کلیدی continue در جاوا
-
آشنایی با کلمه کلیدی default در جاوا
-
آشنایی با کلمه کلیدی do در جاوا
-
آشنایی با کلمه کلیدی double در جاوا
-
آشنایی با کلمه کلیدی else در جاوا
-
آشنایی با کلمه کلیدی enum در جاوا
-
آشنایی با کلمه کلیدی exports در جاوا
-
آشنایی با کلمه کلیدی Inheritance در جاوا
-
آشنایی با کلمه کلیدی final در جاوا
-
آشنایی با کلمه کلیدی finally در جاوا
-
آشنایی با کلمه کلیدی float در جاوا
-
آشنایی با کلمه کلیدی for در جاوا
-
آشنایی با کلمه کلیدی if در جاوا
-
آشنایی با کلمه کلیدی implements در جاوا
-
آشنایی با کلمه کلیدی import در جاوا
-
آشنایی با کلمه کلیدی instanceof در جاوا
-
آشنایی با کلمه کلیدی int در جاوا
-
آشنایی با کلمه کلیدی Interface در جاوا
-
آشنایی با کلمه کلیدی long در جاوا
-
آشنایی با کلمه کلیدی module در جاوا
-
آشنایی با کلمه کلیدی native در جاوا
-
آشنایی با کلمه کلیدی new در جاوا
-
آشنایی با کلمه کلیدی package در جاوا
-
آشنایی با کلمه کلیدی private در جاوا
-
آشنایی با کلمه کلیدی protected در جاوا
-
آشنایی با کلمه کلیدی public در جاوا
-
آشنایی با کلمه کلیدی return در جاوا
-
آشنایی با کلمه کلیدی requires در جاوا
-
آشنایی با کلمه کلیدی short در جاوا
-
آشنایی با کلمه کلیدی static در جاوا
-
آشنایی با کلمه کلیدی super در جاوا
-
آشنایی با کلمه کلیدی switch در جاوا
-
آشنایی با کلمه کلیدی synchronized در جاوا
-
آشنایی با کلمه کلیدی this در جاوا
-
آشنایی با کلمه کلیدی throw در جاوا
-
آشنایی با کلمه کلیدی throws در جاوا
-
آشنایی با کلمه کلیدی transient در جاوا
-
آشنایی با کلمه کلیدی try...catch در جاوا
-
آشنایی با کلمه کلیدی var در جاوا
-
آشنایی با کلمه کلیدی void در جاوا
-
آشنایی با کلمه کلیدی volatile در جاوا
-
آشنایی با کلمه کلیدی while در جاوا
-
متد charAt() در جاوا
-
متد codePointAt() در جاوا
-
متد codePointBefore() در جاوا
-
متد codePointCount() در جاوا
-
متد compareTo() در جاوا
-
متد compareToIgnoreCase() در جاوا
-
متد concat() در جاوا
-
متد contains() در جاوا
-
متد contentEquals() در جاوا
-
متد copyValueOf() در جاوا
-
متد endsWith() در جاوا
-
متد equals() در جاوا
-
متد equalsIgnoreCase() در جاوا
-
متد format() در جاوا
-
متد getBytes() در جاوا
-
متد getChars() در جاوا
-
متد hashCode() در جاوا
-
متد indexOf() در جاوا
-
متد isEmpty() در جاوا
-
متد join() در جاوا
-
متد lastIndexOf() در جاوا
-
متد length() در جاوا
-
متد matches() در جاوا
-
متد offsetByCodePoints() در جاوا
-
متد regionMatches() در جاوا
-
متد replace() در جاوا
-
متد replaceAll() در جاوا
-
متد replaceFirst() در جاوا
-
متد split() در جاوا
-
متد startsWith() در جاوا
-
متد subSequence() در جاوا
-
متد substring() در جاوا
-
متد toCharArray() در جاوا
-
متد toLowerCase() در جاوا
-
متد toString() در جاوا
-
متد toUpperCase() در جاوا
-
متد trim() در جاوا
-
متد valueOf() در جاوا
-
متد abs() در جاوا
-
متد acos() در جاوا
آشنایی با LinkedList در جاوا
در فصل قبلی، با ArrayList آشنا شدی. حالا میخواهیم درباره LinkedList صحبت کنیم. این دو کلاس (Class) خیلی شبیه به هم هستند، اما در نحوه ذخیرهسازی و عملکرد تفاوتهایی دارند.
تعریف LinkedList در جاوا 🧐
لینکدلیست یا LinkedList یکی از ساختارهای دادهای در جاواست که مجموعهای از اشیاء (Objects) را در خود نگه میدارد. درست مثل ArrayList، میتوان به لیست عنصر (Element) اضافه کرد، حذف کرد، یا آن را تغییر داد.
مثال: ایجاد یک LinkedList و افزودن عناصر به آن
بیایید یک لیست از نام ماشینها بسازیم و چند مقدار به آن اضافه کنیم:
// وارد کردن کلاس LinkedList
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> cars = new LinkedList<String>();
// اضافه کردن عناصر به لیست
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");
// چاپ لیست
System.out.println(cars);
}
}
✅ خروجی:
[Volvo, BMW, Ford, Mazda]
تفاوت بین ArrayList و LinkedList ⚖️
✅ شباهتها:
- هر دو لیستی از اشیاء را نگه میدارند.
- هر دو متدهای یکسانی دارند چون از رابط List (Interface) پیروی میکنند.
- میتوان عناصر را اضافه، حذف و ویرایش کرد.
❌ تفاوتها:
نحوه ذخیرهسازی
- ArrayList: دادهها را در یک آرایه معمولی ذخیره میکند.
- LinkedList: دادهها را در کانتینرهایی ذخیره میکند که به هم متصل هستند.
افزودن و حذف عناصر
- در ArrayList، اگر آرایه پر شود، یک آرایه جدید ساخته شده و دادهها کپی میشوند که زمانبر است.
- در LinkedList، دادهها بهصورت پویا ذخیره میشوند و فقط اشارهگرها تغییر میکنند که سریعتر است.
دسترسی به عناصر
- ArrayList سریعتر است چون به هر عنصر میتوان از طریق اندیس (Index) دسترسی پیدا کرد.
- LinkedList کندتر است چون برای پیدا کردن یک عنصر باید از ابتدا تا آن عنصر حرکت کرد.
نحوه کارکرد ArrayList و LinkedList 🔍
📌 روش ذخیرهسازی در ArrayList
📂 ArrayList یک آرایه معمولی داخل خود دارد. وقتی عنصری اضافه شود، داخل آرایه قرار میگیرد.
اگر آرایه ظرفیت نداشته باشد، یک آرایه جدید و بزرگتر ساخته میشود و دادهها به آن کپی میشوند.
✅ مزیت: دسترسی سریع به عناصر با استفاده از اندیس
❌ عیب: افزودن یا حذف عناصر در میانه لیست کند است، چون همه دادهها باید جابجا شوند.
📌 روش ذخیرهسازی در LinkedList
🔗 LinkedList دادهها را در کانتینرهایی ذخیره میکند که به هم متصل هستند.
هر کانتینر شامل دادهها و یک اشارهگر به کانتینر بعدی است.
✅ مزیت: افزودن و حذف سریعتر چون فقط اشارهگرها تغییر میکنند.
❌ عیب: دسترسی به عناصر کندتر است چون برای پیدا کردن هر مقدار باید از ابتدا حرکت کرد.
📌 پس کِی از هر کدام استفاده کنیم؟
- اگر نیاز به جستجوی سریع عناصر داریم، از ArrayList استفاده کنیم.
- اگر بیشتر عملیات ما حذف و اضافه است، LinkedList انتخاب بهتری است.
متدهای مهم در LinkedList 🔥
در LinkedList، متدهایی وجود دارد که مدیریت لیست را آسانتر میکند:
متد | توضیح |
---|---|
addFirst() | یک عنصر را به ابتدای لیست اضافه میکند. |
addLast() | یک عنصر را به انتهای لیست اضافه میکند. |
removeFirst() | اولین عنصر لیست را حذف میکند. |
removeLast() | آخرین عنصر لیست را حذف میکند. |
getFirst() | اولین عنصر لیست را برمیگرداند. |
getLast() | آخرین عنصر لیست را برمیگرداند. |
📌 مثال: استفاده از متدهای LinkedList
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> cars = new LinkedList<String>();
// افزودن عناصر به لیست
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
// افزودن به ابتدای لیست
cars.addFirst("Tesla");
// افزودن به انتهای لیست
cars.addLast("Mazda");
// نمایش اولین و آخرین عنصر
System.out.println("اولین ماشین: " + cars.getFirst());
System.out.println("آخرین ماشین: " + cars.getLast());
// حذف اولین و آخرین عنصر
cars.removeFirst();
cars.removeLast();
// نمایش لیست بعد از تغییرات
System.out.println("لیست نهایی: " + cars);
}
}
✅ خروجی:
اولین ماشین: Tesla
آخرین ماشین: Mazda
لیست نهایی: [Volvo, BMW, Ford]
جمعبندی 🎯
- میتوان گفت LinkedList و ArrayList هر دو از لیستها در جاوا هستند اما در نحوه ذخیرهسازی متفاوتند.
- ArrayList برای دسترسی سریع به دادهها مناسب است، در حالی که LinkedList برای افزودن و حذف سریعتر کاربرد دارد.
- در LinkedList دادهها به هم متصل هستند و نیازی به جابجایی کل آرایه هنگام تغییرات نیست.
- متدهایی مانند
addFirst()
وremoveLast()
مدیریت لیست را آسانتر میکنند.
📌 سوال چالشبرانگیز 🤔
اگر بخواهی لیستی از تاریخهای ورود کاربران بسازی و مرتبسازی سریع برایت مهم باشد، از ArrayList استفاده میکنی یا LinkedList؟ چرا؟ 🧐