Arraylist در مقابل Vector
یک آرایه فهرست را می توان به عنوان یک آرایه پویا دید که می تواند در اندازه بزرگ شود. به همین دلیل، برنامه نویس نیازی به دانستن اندازه فهرست آرایه در هنگام تعریف آن ندارد. وکتور همچنین می تواند به عنوان آرایه ای دیده شود که می تواند در اندازه بزرگ شود. بردارها را می توان به راحتی تخصیص داد و زمانی که اندازه مورد نیاز فضای ذخیره تا زمان اجرا مشخص نیست می توان از آنها استفاده کرد.
Arraylist چیست؟
یک آرایه فهرست را می توان به عنوان یک آرایه پویا دید که می تواند در اندازه بزرگ شود. بنابراین آرایهها برای استفاده در شرایطی که اندازه عناصر مورد نیاز در زمان اعلام را نمیدانید ایدهآل هستند.در جاوا، آرایهها فقط میتوانند اشیاء را نگه دارند، نمیتوانند انواع اولیه را مستقیماً نگه دارند (شما میتوانید انواع اولیه را درون یک شی قرار دهید یا از کلاسهای wrapper انواع اولیه استفاده کنید). به طور کلی آرایه ها با روش هایی برای انجام درج، حذف و جستجو ارائه می شوند. پیچیدگی زمانی دسترسی به یک عنصر o(1) است، در حالی که درج و حذف دارای پیچیدگی زمانی o(n) است. در جاوا، آرایهها را میتوان با استفاده از حلقههای foreach، تکرارکنندهها یا به سادگی با استفاده از ایندکسها پیمایش کرد. در جاوا، آرایهها از نسخه 1.2 معرفی شدند و بخشی از چارچوب مجموعههای جاوا است.
بردار چیست؟
Vector نیز آرایهای است که میتواند از نظر اندازه رشد کند. بردارها را می توان به راحتی تخصیص داد و زمانی می توان از آنها استفاده کرد که اندازه مورد نیاز ذخیره سازی تا زمان اجرا مشخص نباشد. بردارها همچنین فقط می توانند اشیاء را نگه دارند و نمی توانند انواع اولیه را در خود نگه دارند. بردارها همگام هستند، بنابراین می توان با خیال راحت در محیط های چند رشته ای استفاده کرد. بردارها با روش هایی برای افزودن اشیاء، حذف اشیا و جستجوی اشیا ارائه شده اند.مشابه آرایهها در جاوا، بردارها را میتوان با استفاده از حلقههای foreach، تکرارکنندهها یا به سادگی با استفاده از ایندکسها پیمایش کرد. وقتی صحبت از جاوا به میان میآید، از اولین نسخه جاوا بردارها گنجانده شدهاند.
تفاوت بین Arraylist و Vector چیست؟
حتی اگر هم آرایهها و هم بردارها بسیار شبیه به آرایههای پویا هستند که میتوانند از نظر اندازه رشد کنند، اما تفاوتهای مهمی با هم دارند. تفاوت اصلی بین آرایهها و بردارها این است که بردارها همگام هستند در حالی که آرایهها غیرهمگام هستند. بنابراین استفاده از آرایهها در محیطهای چند رشتهای مناسب نخواهد بود، در حالی که بردارها را میتوان به طور ایمن در محیطهای چند رشتهای استفاده کرد (از آنجایی که از نظر نخی ایمن هستند). اما همگام سازی در بردارها باعث کاهش عملکرد می شود. بنابراین، استفاده از بردارها در یک محیط رشته ای منفرد ایده خوبی نخواهد بود. در داخل، هم آرایهها و هم بردارها از آرایهها برای نگهداری اشیا استفاده میکنند. هنگامی که فضای فعلی کافی نباشد، بردارها اندازه آرایه داخلی آن را دو برابر می کنند، در حالی که آرایه لیست ها اندازه آرایه داخلی آن را 50٪ افزایش می دهند.اما هنگام استفاده از فهرستها و بردارها، با دادن ظرفیت اولیه مناسب، میتوان از تغییر اندازه غیرضروری آرایه داخلی جلوگیری کرد. در شرایطی که نرخ رشد دادهها مشخص است، استفاده از بردارها مناسبتر است زیرا میتوان مقدار افزایشی بردارها را تعریف کرد.