بررسی و کار با Vector
کلاس Vector در جاوا، مشابه ArrayList است با این تفاوت در Vector متد ها synchronized هستند.
در Vector علاوه بر متد های تعریف شده در List، متدهای اختصاصی خودش هم داره که در این مطلب متد های اختصاصی Vector رو بررسی می کنیم.
کلاس Vector در جاوا از AbstractList ارثبری میکنه؛ زمانی که به synchronized احتیاج نداریم استفاده از ArrayList مناسبه اما وقتی که به synchronized نیاز داریم 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 رو تغییر بدیم.
بازخورد و دیدگاه ها
اولین نفری باشید که در این صفحه نظر میدهید