menusearch
javapro.ir

جلسه چهارم - تفاوت بین ArrayList و LinkedList در جاوا

جستجو
شنبه ۶ مرداد ۱۴۰۳ | ۱۰:۹:۴۳
۱۳۹۶/۹/۹ پنج شنبه
(4)
(0)
جلسه چهارم - تفاوت بین ArrayList و LinkedList در جاوا
جلسه چهارم  - تفاوت بین ArrayList و LinkedList در جاوا
به نام خدا

       
تقدیم به هموطنان عزیزم



جاوا را با لذت یاد بگیر!


آموزش زبان برنامه نویسی جاوا

Collections در جاوا

موضوع: تفاوت بین ArrayList و LinkedList

جلسه: چهارم

نویسنده : رحمان زارعی

جاوا را ساده،آسان و شیرین بنوشید!!!



سلام.امروز عصر در یک روز بارونی قصد دارم تفاوت بین کلاس ArrayList و کلاس LinkedList رو براتون بگم 😊😊😊

تفاوت بین ArrayList و LinkedList

ArrayList و LinkedList هر دو از کلاس های موجود در فریم ورک Collection در جاوا می‌باشند.هر دو، اینترفیس list را implements کرده اند.

کلاس ArrayList لیستی را ایجاد می‌کند که در داخل یک آرایه پویا (dynamic array) ذخیره می‌شود که اندازه آن با توجه به اضاف یا کم شدن عناصر، بزرگ تر یا کوچک تر است.
کلاس LinkedList لیستی را ایجاد می‌کند که در داخل یک لیست پیوندی دو طرفه (doubly linked list) ذخیره می‌شود.

هر دو کلاس برای ذخیره عناصر در لیست استفاده می‌شوند، اما عمده تفاوت بین کلاس های ArrayList و LinkedList این است که ArrayList با توجه به این که یک ساختمان داده مبتنی بر index است( یعنی می‌توانیم بر اساس شماره خانه هر عنصر، به عنصر مورد نظر دسرسی پیدا کنیم)، اجازه دسرسی تصادفی (random) به عناصر موجود در لیست خود را می‌دهد. از سوی دیگر LinkedList اجازه دسرسی تصادفی به عناصر خود را نمی‌دهد، چرا؟ به دلیل این که در LinkedList ایندکس( index ) برای دسرسی مستقیم به عناصر وجود ندارد و تنها از طریق پیمایش LinkedList می توان به عناصر موجود در آن دسرسی پیدا کرد.

تفاوت های میان دو کلاس ArrayList و LinkedList را در جدول زیر جمع آوری کرده ایم:


شمارهLinkedListArrayList
1LinkedList اجازه دسرسی تصادفی به عناصر موجود در لیست را نمی‌دهد.ArrayList اجازه دسرسی تصادفی به عناصر موجود در لیست را می‌دهد.
2ساختمان داده داخلی که برای ذخیره عناصر استفاده می‌شود یک لیست پیوندی دو طرفه(doubly linked list) است.ساختمان داده داخلی که برای ذخیره عناصر استفاده می‌شود یک آرایه پویا(dynamic array) است.
3LinkedList کلاس AbstractSequentialList را extends کرده است.ArrayList کلاس AbstarctList را extends یا به ارث برده است.
4LinkedList علاوه بر اینترفیس list اینترفیس های Deque و Queueرا implements کرده است.
ما در جلسات آینده در مورد ها Deque و Queue بحث خواهیم کرد.
کلاس AbstarctList نیز اینترفیس List را implements کرده است.
به دلیل این که کلاس ArrayList کلاس AbstarctList به ارث برده و کلاس AbstarctList نیز اینترفیس List را implements کرده است.
، پس می‌توان گفت که کلاس ArrayList اینترفیس List را implements کرده است
5دسرسی به عناصر موجود در لیست LinkedList کندتر است.دسرسی به عناصر موجود در لیست ArrayList سریع تر است.
6دستکاری به عناصر موجود در لیست LinkedList سریع تر است.دستکاری عناصر موجود در لیست ArrayList کندتر است.
7LinkedList هم می‌تواند به عنوان یک list(لیست) و هم یک Queue (صف) عمل کند. زیرا هر دو اینترفیس List و Queue را implements کرده است.ArrayList فقط می‌تواند به عنوان یک list(لیست) عمل کند، زیرا تنها اینترفیس List را implements کرده است.
8LinkedList برای دستکاری داده ها بهتر است.
منظور از دستکاری، عملیات حذف یا اضاف کردن عناصر در لیست است.
ArrayList برای ذخیره و دسرسی به داده ها بهتر است.

نتیجه:
هنگام عملیات دستکاری، نظیر اضاف یا حذف کردن عناصر در لیست LinkedList مناسب تر است. اگر قصد جست و جوی مکرر در لیست را دارید، ArrayList بهترین انتخاب است، چرا که در دسرسی به عناصر لیست بهتر عمل می‌کند.
یک مثال ساده از ArrayList و LinkedList را در زیر می‌توانید ببینید:

Example:
package linkedList;

import java.util.*;

class TestArrayLinked {
  public static void main(String args[]) {

       List<String> al = new ArrayList<String>();// creating arraylist
     al.add("Ravi");// adding object in arraylist
     al.add("Vijay");
       al.add("Ravi");
     al.add("Ajay");

       List<String> al2 = new LinkedList<String>();// creating linkedlist
       al2.add("James");// adding object in linkedlist
       al2.add("Serena");
     al2.add("Swati");
     al2.add("Junaid");

       System.out.println("arraylist: " + al);
       System.out.println("linkedlist: " + al2);
   }
}

خروجی(output):
 
arraylist: [Ravi, Vijay, Ravi, Ajay]
linkedlist: [James, Serena, Swati, Junaid]

•    لازم به ذکر است که ما کلاس هایArrayList و LinkedList را در جلسات گذشته به صورت جداگانه بررسی کرده ایم.
پیروز و موفق باشید 😊😊😊

این جلسه آموزشی را می‌توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)




کانال تلگرام آموزش جاوا



آموزش آسان و ساده زبان برنامه نویسی جاوا
لینک دانلود

نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.
نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

1 نظر
forough
یکشنبه هفدهم فروردین ۹۹
پاسخ
()
()
forough
با سلام و تشکر از سايت و دروس خوبتون در متن دس جلسه سوم براي ليست پيوندي index آورده شده. در توضيحات متد اول. مگر ليست پيوندي index دارد؟
پاسخ مدیر سایت
سلام. گاهی اوقات نیاز داریم یک عنصر را در خانه مشخص از لیست پیوندی درج کنیم که از متد void add(int  index, Object element) استفاده می‌شود.
پاسخ مدیر سایت
هدر سایت
مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو  [کلیک کنید]
آموزش پروژه محور اسپرینگ بوت(Spring Boot)-سیستم دانشگاه
ثبت نام در دوره آموزش Spring security
دوره پرتاب | آموزش پیش نیازهای برنامه نویسی
دوره آموزش مبانی زبان برنامه نویسی جاوا
دوره آموزش مفاهیم پیشرفته زبان برنامه نویسی جاوا
مقدمه ای از زبان برنامه نویسی جاوا(java)
آموزش زبان برنامه نویسی جاوا
آموزش گرافیک در زبان برنامه نویسی جاوا
آموزش مدیریت چیدمان گرافیکی در زبان جاوا
آموزش ساخت بازی دوبعدی در زبان جاوا
Collection ها در زبان برنامه نویسی جاوا
آموزش پروژه محور ساخت برنامه مدیریت بانک با JavaFX
نمونه پروژه های رایگان زبان جاوا
آموزش دیتابیس در زبان برنامه نویسی جاوا
نمونه مثال پایه ای زبان برنامه نویسی جاوا
نمونه مثال String در زبان برنامه نویسی جاوا
آموزش جامع برنامه نویسی JavaFX
آموزش ساخت برنامه آزمون تستی در JavaFX
آموزش برنامه نویسی سوکت در جاوا
آموزش ساخت برنامه دفترچه تلفن با JavaFX
آموزش ساخت ربات ساده تلگرام با زبان جاوا
آموزش ساخت برنامه ماشین حساب با JavaFX
آموزش ساخت برنامه ساده مدیریت ایمیل ها با JavaFX
دوره آموزش Spring Boot
سفارش انجام پروژه زبان برنامه نویسی جاوا(JAVA)
سفارش انجام پروژه برنامه نویسی متلب(MATLAB) با قیمت منصفانه و تحویل به موقع
سفارش انجام پروژه زبان برنامه نویسی سی شارپ (#C)
سفارش انجام پروژه زبان برنامه نویسی سی(C)
سفارش انجام پروژه زبان برنامه نویسی پایتون(Python)
سفارش انجام پروژه زبان برنامه نویسی PHP (پی اچ پی)
سفارش انجام پروژه زبان برنامه نویسی اسمبلی(Assembly)
سفارش انجام پروژه زبان برنامه نویسی جاوا اسکریپت (Javascript)
سفارش انجام پروژه هوش مصنوعی
سفارش انجام پروژه طراحی الگوریتم
سفارش انجام پروژه ساختمان داده ها
سفارش انجام پروژه مهندسی نرم افزار
سفارش انجام پروژه شبکه های کامپیوتری
سفارش انجام پروژه پایگاه داده: دیتابیس (database)
 سفارش انجام پروژه سیستم عامل
سفارش انجام پروژه پاورپوینت(PowerPoint)
سفارش انجام پروژه اکسل (Excel)
سفارش انجام تحقیق و تهیه مقاله
سوالات متداول برنامه نویسی
جدیدترین مطالب
گفتگو را شروع کنید
مشاوره ،تدریس خصوصی و سفارش انجام انواع پروژه های برنامه نویسی