جستجو
۱۳۹۶/۹/۹ پنج شنبه
(1)
(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 شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)




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



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

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

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

0 نظر
طراحی شده توسط شرکت طراحی سایت و سایت ساز آنلاین یوتاب - فروشگاه ساز اینترنتیطراحی شده توسط شرکت طراحی سایت و سایت ساز آنلاین یوتاب - فروشگاه ساز اینترنتیساخت سایت بهترین سایت سازطراحی سایت سایت ساز فروشگاه ساز ساخت فروشگاه اینترنتی