Android-FAQ icon indicating copy to clipboard operation
Android-FAQ copied to clipboard

‫تفاوت list با arrayList ؟

Open FatemehKavoosi opened this issue 5 years ago • 3 comments

FatemehKavoosi avatar Jul 09 '20 18:07 FatemehKavoosi

List یک اینترفیسی هست که کلاس ArrayList اون رو Implement می کنه؛ ولی پیش از اون باید به یک نکته ای اشاره کنم؛ یک نوع برنامه نویسی ای وجود داره، به نام Programming To Interface که بصورت خلاصه، می گه رفتار های کلاس ها رو در قالب Interface تعیین کنیم، و اون هارو تو اون کلاس ها Implement کنیم، و هر جایی که به پیاده سازی ای از این کلاس ها نیاز داشتیم، از همین اینترفیس ها استفاده کنیم.

حالا بریم سر پرسش اصلی، چرا باید به جای ArrayList، از List ها استفاده کنیم؟

در کل پیاده سازی های متفاوتی از List وجود داره مثل LinkedList و Stack، و اگه از اینترفیس List، بجای خود کلاس پیاده سازی شده بطور مستقیم استفاده کنیم، انعطاف پذیری کدمون رو بالاتر می بریم. برای نمونه، فکر کنین که یه اینترفیس داریم، که نوع برگشتی یکی از متد های اون List هست؛ حالا هر کسی که بخواد از اون متد استفاده کنه، می تونه بسته به نیازش اونو تو پیاده سازی مورد نظرش داشته باشه. پس در نتیجه، این کار بیشتر برای رعایت اصول برنامه نویسی و قوانین شی گراییه. برای مطالعه بیشتر، لینک های زیر توصیه می شن:

Programming To Interface Why List as ArrayList (1) Why List as ArrayList (2)

arenshaee avatar Oct 05 '20 21:10 arenshaee

  • در aaraylist آیتم ها میتونند متفاوت باشند ولی در لیست نوع آیتم ها باید یکسان باشند

  • در list مقدار حافظه ای که تخصیص داده می شود ثابت است یعنی چه شما از این متغیر استفاده کنید یا نکنید حافظه ی استفاده شده ثابت است، اما در arraylist مقدار حافظه ی اشغال شده پویا است ، یعنی به میزانی که از متغیرتون استفاده می کنید حافظه اسغال می شود، در ضمن در arraylist اگر خانه ای را هم حذف کنید،مقدار حافظه متناسب با آن به حافظه برگردانده می شود و به طور فیزیکی هم حذف میگردد اما در list شما نمیتونید خانه ای را به طور فیزیکی حذف کنید.

MohsenNooriArdestani avatar May 14 '22 15:05 MohsenNooriArdestani

  1. Java ArrayList class can contain duplicate elements.
  2. Java ArrayList class maintains insertion order.
  3. Java ArrayList class is non synchronized.
  4. Java ArrayList allows random access because the array works on an index basis.
  5. In ArrayList, manipulation is a little bit slower than the LinkedList in Java because a lot of shifting needs to occur if any element is removed from the array list.
  6. We can not create an array list of the primitive types, such as int, float, char, etc. It is required to use the required wrapper class in such cases. For example:
 ArrayList<int> al = ArrayList<int>(); // does not work  
 ArrayList<Integer> al = new ArrayList<Integer>(); // works fine  
  1. Java ArrayList gets initialized by the size. The size is dynamic in the array list, which varies according to the elements getting added or removed from the list.

MohsenNooriArdestani avatar May 14 '22 15:05 MohsenNooriArdestani