کالکشن ها در جاوا: آموزش کار با Vector + مثال

کالکشن ها در جاوا: آموزش کار با Vector + مثال

بررسی و کار با Vector

کلاس Vector در جاوا، مشابه ArrayList است با این تفاوت در Vector متد ها synchronized هستند.

در Vector علاوه بر متد های تعریف شده در List، متدهای اختصاصی خودش هم داره که در این مطلب متد های اختصاصی Vector رو بررسی می کنیم.

کلاس Vector در جاوا از AbstractList ارث‌بری میکنه؛ زمانی که به synchronized احتیاج نداریم استفاده از ArrayList مناسبه اما وقتی که به synchronized نیاز داریم Vector جایگزین خوبیه.

سلسله مراتب ارث‌بری کلاس ‌Vector در جاوا
سلسله مراتب ارث‌بری کلاس Vector در جاوا

در زیر نمودار UML متد های Vector با توضیحاتشون آورده شده است.

java.util.Vector
+Vector() یک نمونه از Vector ایجاد می کنه.
+Vector(c: Collection<? extends E>) یک نمونه از Vector ایجاد می کنه و اعضای کالکشن c رو بهش اضافه می کنه.
+Vector(initialCapacity: int) یک نمونه از Vector با ظرفیت اولیه ایجاد می کنه.
+addElement(e: Element): void عنصر e رو به آخر Vector اضافه می کنه.
+capacity(): int ظرفیت فعلی Vector رو بر میگردونه.
+copyInto(array: Object[]): void اعضای Vector رو داخل array کپی می کنه.
+elementAt(index: int): E عنصر موجود در index مورد نظر رو بر میگردونه.
+elements(): Enumeration<E> یک Enumeration از عناصر Vector بر میگردونه.
+ensureCapacity(minCapacity: int): void مطمئن میشیم که ظرفیت Vector از مقداری که تعیین میکنیم کمتر نباشه.
+firstElement(): E اولین عنصر در Vector رو بر میگردونه.
+lastElement(): E آخرین عنصر در Vector رو بر میگردونه.
+insertElementAt(e: E, index: int): void عنصر e رو در index مورد نظر اضافه میکنه.
+removeAllElements(): void تمام عناصر موجود در Vector رو حذف می کنه.
+removeElement(o: Object): boolean عنصر مطابق با o رو در Vector حذف می کنه.
+removeElementAt(index: int): E عنصر موجود در index مورد نظر رو حذف کرده و بر میگردونه.
+setElementAt(e: E, index: int): void عنصر جدید رو با عنصر قدیمی موجود در index مورد نظر جایگزین میکنه.
+setSize(newSize: int): void سایز جدید برای vector تعریف می کنه و عناصر اضافی رو حذف میکنه؛ اگه سایز جدید بیشتر از تعداد عناصر باشه مقادیر null رو به بقیه عناصر اضافه می کنه.
+trimToSize(): void ظرفیت Vector رو برابر با size Vector می کنه.

برای بسیاری از متد های بالا متد های مشابه وجود داره که در List تعریف شدن؛ در جدول زیر متد های مشابه بالا که در List تعریف شدن و در Vector نیز وجود دارن آورده شده است.

متد های تعریف شده در Vector متد های تعریف شده در List
addElement(E): void add(E): boolean
insertElementAt(E, int): void add(int, E): void
removeAllElements(): void clear(): void
removeElementAt(int): E remove(int): E
removeElement(Object): boolean remove(Object): boolean

در Vector میتونیم ظرفیت (capacity) و اندازه (size) رو تغییر بدیم، اگه ظرفیت Vector رو کمتر از size آن قرار بدیم تغییری نمیکنه اما اگه از ظرفیت فعلی خودش بیشتر باشه، ظرفیتش افزایش پیدا میکنه ؛اندازه (size) در Vector برابر است با تعداد عناصر موجود در Vector؛ اگه اندازه (size) رو کمتر از تعداد عناصر فعلی در Vector قرار بدیم، عناصر اضافه حذف میشن و به اندازه ی size جدید عنصر در Vector باقی میمونه و اگه size رو بیشتر از تعداد عناصر موجود در Vector قرار بدیم، مقادیر null به سایر عناصر موجود در Vector اضافه میشن.

در مثال زیر نحوه ی کار با متد های گفته شده در Vector رو توضیح دادیم.

Vector<String> vector = new Vector<>();
vector.ensureCapacity(14);
System.out.println("After changing minimum capacity to 14, the capacity is " + vector.capacity() );
vector.addElement("Red");
vector.add("Green"); //defined in List
vector.addElement("Blue");
vector.add("Cyan");
vector.addFirst("Yellow");
vector.addLast("Green");

System.out.println("Colors are " + vector);

System.out.println("The size of vector is " + vector.size());
System.out.println("The capacity of vector is " + vector.capacity());

vector.setSize(2);
System.out.println("After changing size of vector The size is " + vector.size() + " remaining colors in vector are: " );
System.out.println(vector);

vector.setSize(25);
System.out.println("After Increasing size to " + vector.size());
System.out.println("capacity is " + vector.capacity());
System.out.println("Elements in vector are ");
System.out.println(vector);

System.out.println("Traversing vector by for loop: ");

for (int i=0; i<vector.size(); i++)
    System.out.print(vector.elementAt(i) + " ");
        

خلاصه

  • کلاس Vector مشابه ArrayList در جاواست و تنها تفاوتش با ArrayList در synchronized بودن متد هاشه.
  • در Vector با ensureCapacity و setSize میتونیم ظرفیت و اندازه ی Vector رو تغییر بدیم.

بازخورد و دیدگاه‌ ها

اولین نفری باشید که در این صفحه نظر می‌دهید

notifications برای اطلاع از جدیدترین مطالب و پست های مرتبط، عضو کانال تلگرام ما بشید.

arrow_drop_up
کپی شد!