تفاوت کلیدی – ArrayList در مقابل LinkedList
مجموعه ها برای ذخیره داده ها مفید هستند. در یک آرایه معمولی، اندازه آرایه ثابت است. گاهی اوقات نیاز به ایجاد آرایه هایی است که می توانند در صورت نیاز رشد کنند. زبان های برنامه نویسی مانند جاوا دارای مجموعه هستند. این یک چارچوب با مجموعه ای از کلاس ها و رابط ها است. به عنوان ظرفی برای گروهی از عناصر عمل می کند. مجموعه ها اجازه ذخیره، به روز رسانی، بازیابی مجموعه ای از عناصر را می دهند. این به کار با ساختارهای داده مانند لیست ها، مجموعه ها، درختان و نقشه ها کمک می کند. لیست یک رابط از چارچوب مجموعه است. ArrayList و LinkedList دو کلاس در چارچوب مجموعه هستند. آنها رابط مجموعه و رابط فهرست را پیاده سازی می کنند.این مقاله به تفاوت بین ArrayList و LinkedList می پردازد. ArrayList کلاسی است که AbstractList را گسترش می دهد و رابط List را پیاده سازی می کند که در داخل از یک آرایه پویا برای ذخیره عناصر داده استفاده می کند. LinkedList کلاسی است که AbstractSequentialList را گسترش میدهد و رابطهای List، Deque و Queue را پیادهسازی میکند، که در داخل از یک لیست پیوندی مضاعف برای ذخیره عناصر داده استفاده میکنند. این تفاوت اصلی بین ArrayList و LinkedList است.
ArrayList چیست؟
کلاس ArrayList برای ایجاد آرایه های پویا استفاده می شود. بر خلاف یک آرایه معمولی، اندازه یک آرایه پویا ثابت نیست. یک شی ایجاد شده با استفاده از کلاس ArrayList مجاز است مجموعه ای از عناصر را در لیست ذخیره کند. ظرفیت به طور خودکار افزایش می یابد، بنابراین برنامه نویس می تواند عناصر را به لیست اضافه کند. کلاس ArrayList کلاس AbstractList را گسترش می دهد که رابط List را پیاده سازی می کند. بنابراین، روش های رابط List می تواند توسط ArrayList استفاده شود. برای دسترسی به عناصر، از متد get() استفاده می شود.از متد add() می توان برای افزودن عناصر به لیست استفاده کرد. متد remove() برای حذف یک عنصر از لیست استفاده می شود. به برنامه زیر مراجعه کنید.
شکل 01: نمونه ای از ArrayList
طبق برنامه فوق، یک شی از ArrayList ایجاد می شود. با استفاده از روش افزودن می توان عناصر را به صورت پویا اضافه کرد. عناصر "A"، "B"، "C"، "D" و "E" با استفاده از روش افزودن اضافه می شوند. روش حذف برای حذف یک عنصر از لیست استفاده می شود. وقتی عدد 4 را به متد حذف میدهید، حرف در فهرست چهارم که “E” است از لیست حذف میشود. هنگام تکرار در لیست با استفاده از حلقه for، حروف A، B، C و D چاپ می شوند.
LinkedList چیست؟
مشابه ArrayList، LinkedList برای ذخیره عناصر داده به صورت پویا استفاده می شود. یک شی ایجاد شده با استفاده از کلاس LinkedList مجاز است مجموعه ای از عناصر را در لیست ذخیره کند. ظرفیت به طور خودکار افزایش می یابد، بنابراین برنامه نویس می تواند عناصر را به لیست اضافه کند. به صورت داخلی از لیست پیوندی مضاعف برای ذخیره داده ها استفاده می کند. در یک لیست با پیوند دوگانه، داده ها به عنوان گره ذخیره می شوند. هر گره شامل دو پیوند است. اولین پیوند به گره قبلی اشاره می کند. پیوند بعدی به گره بعدی در دنباله اشاره می کند.
کلاس LinkedList کلاس AbstractSequentialList را گسترش می دهد و رابط List را پیاده سازی می کند. بنابراین، روش های رابط List را می توان توسط LinkedList استفاده کرد. برای دسترسی به عناصر لیست می توان از متد get() استفاده کرد. از متد add() می توان برای افزودن عناصر به لیست استفاده کرد. متد remove() برای حذف یک عنصر از لیست استفاده می شود. به برنامه زیر مراجعه کنید.
شکل 02: مثال با LinkedList
طبق برنامه فوق، یک شی از LinkedList ایجاد می شود. با استفاده از روش افزودن می توان عناصر را به صورت پویا اضافه کرد. عناصر "A"، "B"، "C"، "D" و "E" با استفاده از روش افزودن اضافه می شوند. روش حذف برای حذف یک عنصر از لیست استفاده می شود. وقتی عدد 4 را به متد حذف میدهید، حرف در فهرست چهارم که “E” است از لیست حذف میشود. هنگام تکرار با استفاده از حلقه for، حروف A، B، C و D چاپ می شوند.
شباهتهای بین ArrayList و LinkedList چیست؟
- هر دو ArrayList و LinkedList رابط List را پیاده سازی می کنند.
- هر دو ArrayList و LinkedList می توانند حاوی عناصر تکراری باشند.
- هر دو ArrayList و LinkedList ترتیب درج را حفظ می کنند.
تفاوت بین ArrayList و LinkedList چیست؟
ArrayList در مقابل LinkedList |
|
ArrayList کلاسی است که AbstractList را گسترش می دهد و رابط List را پیاده سازی می کند که در داخل از یک آرایه پویا برای ذخیره عناصر داده استفاده می کند. | LinkedList کلاسی است که AbstractSequentialList را گسترش میدهد و رابطهای List، Deque، Queue را پیادهسازی میکند، که در داخل از یک فهرست پیوندی مضاعف برای ذخیره عناصر داده استفاده میکند. |
دسترسی به عناصر | |
دسترسی به عناصر ArrayList سریعتر از LinkedList است. | دسترسی به عناصر LinkedList کندتر از ArrayList است. |
دستکاری عناصر | |
دستکاری عناصر ArrayList کندتر از LinkedList است. | دستکاری عناصر LinkedList سریعتر از ArrayList است. |
رفتار | |
ArrayList به عنوان یک لیست عمل می کند. | LinkedList به عنوان یک لیست و یک صف اجرا می شود. |
خلاصه – ArrayList در مقابل LinkedList
چارچوب مجموعه اجازه می دهد تا با ساختارهای داده مانند فهرست ها، درختان، نقشه ها و مجموعه ها کار کنید. لیست یک رابط از چارچوب مجموعه است. این مقاله تفاوت بین ArrayList و LinkedList را مورد بحث قرار داد. ArrayList کلاسی است که AbstractList را گسترش می دهد و رابط List را پیاده سازی می کند که به صورت داخلی از یک آرایه پویا برای ذخیره عناصر داده استفاده می کند. LinkedList کلاسی است که AbstractSequentialList را گسترش میدهد و رابطهای List، Deque، Queue را پیادهسازی میکند، که در داخل از یک لیست پیوندی مضاعف برای ذخیره عناصر داده استفاده میکند. این تفاوت بین ArrayList و LinkedList است.