logo

Векторний клас в Java

Клас Vector реалізує масив об’єктів, який можна рости. Вектори належать до застарілих класів, але тепер вони повністю сумісні з колекціями. Знаходиться в пакет java.util і реалізувати Список інтерфейс, тож ми можемо використовувати всі методи інтерфейсу List, як показано нижче:

Векторний клас в Java

  • Vector реалізує динамічний масив, що означає, що він може збільшуватися або зменшуватися за потреби. Як і масив, він містить компоненти, до яких можна отримати доступ за допомогою цілочисельного індексу.
  • Вони дуже схожі на ArrayList , але Vector синхронізовано та має деякі застарілі методи, які не містяться у структурі колекції.
  • Він також підтримує порядок вставки, як ArrayList. Тим не менш, він рідко використовується в безпотоковому середовищі синхронізовано , і через це він дає низьку продуктивність під час додавання, пошуку, видалення та оновлення своїх елементів.
  • Ітератори, які повертає клас Vector, є швидкими збоями. У разі одночасної модифікації, це не вдається та викидає ConcurrentModificationException.

Синтаксис:



public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable>

тут, І це тип елемента.

  • Він розширюється AbstractList і знаряддя Список інтерфейси.
  • Він реалізує інтерфейси Serializable, Cloneable, Iterable, Collection, List, RandomAccess.
  • Безпосередньо відомий підклас Стек .

Важливі моменти щодо приросту векторної ємності:

Якщо вказано приріст, Vector розширюватиметься відповідно до нього в кожному циклі розподілу. Проте, якщо приріст не вказано, то ємність вектора подвоюється в кожному циклі розподілу. Вектор визначає три захищені члени даних:

  • int CapacityIncrement: Містить значення приросту.
  • int elementCount: Кількість елементів вектора, які зберігаються в ньому.
  • Об'єкт elementData[]: У ньому зберігається масив, який містить вектор.

Типовими помилками в оголошенні векторів є як випливає :

  • Вектор кидає IllegalArgumentException якщо InitialSize визначеного вектора негативний.
  • Якщо вказана колекція нульова, вона викидає NullPointerException .

Конструктори

1. Vector(): Створює вектор за замовчуванням із початковою ємністю 10.

Vector v = new Vector();>

2. Вектор (int size): Створює вектор, початкова ємність якого визначається розміром.

Vector v = new Vector(int size);>

3. Вектор (int size, int incr): Створює вектор, початкова ємність якого вказується розміром, а приріст визначається incr. Він визначає кількість елементів, які виділяються кожного разу, коли вектор змінюється вгору.

машинопис для кожного
Vector v = new Vector(int size, int incr);>

4. Вектор (колекція c): Створює вектор, який містить елементи колекції c.

Vector v = new Vector(Collection c);>

Методи у векторному класі

МЕТОД

ОПИС

додати (І і) Додає вказаний елемент у кінець цього вектора.
add(int index, E element) Вставляє вказаний елемент у вказану позицію в цьому векторі.

addAll(Колекція

продовжує E> c)

Додає всі елементи у вказаній колекції в кінець цього вектора в тому порядку, у якому їх повертає ітератор зазначеної колекції.

addAll(int index,

Колекція c)

Вставте всі елементи вказаної колекції в цей вектор у вказану позицію.
addElement(E obj) Додає вказаний компонент у кінець цього вектора, збільшуючи його розмір на одиницю.
місткість() Повертає поточну ємність цього вектора.
очистити() Видаляє всі елементи з цього вектора.
клонувати() Повертає клон цього вектора.
містить (об'єкт o) Повертає true, якщо цей вектор містить вказаний елемент.
міститьВсе(Колекція c) Повертає true, якщо цей вектор містить усі елементи вказаної колекції.
copyInto (Об'єкт [] anArray) Копіює компоненти цього вектора у вказаний масив.
elementAt(індекс int) Повертає компонент за вказаним індексом.
елементи () Повертає перелік компонентів цього вектора.
secureCapacity(int minCapacity) Збільшує ємність цього вектора, якщо необхідно, щоб переконатися, що він може містити принаймні кількість компонентів, визначену аргументом мінімальної ємності.
дорівнює (об'єкт o) Порівнює вказаний об’єкт із цим вектором на рівність.
firstElement() Повертає перший компонент (елемент з індексом 0) цього вектора.

forEach(Споживач

супер E> дія)

тонкий алгоритм
Виконує задану дію для кожного елемента Iterable, доки всі елементи не будуть оброблені або дія не викличе виняткову ситуацію.
отримати (індекс індексу) Повертає елемент у вказаній позиції у цьому векторі.
hashCode() Повертає значення хеш-коду для цього вектора.
indexOf(Об'єкт o)

Повертає індекс першого входження зазначеного елемента в цьому векторі,

або -1, якщо цей вектор не містить елемент.

indexOf(Object o, int index) Повертає індекс першого входження зазначеного елемента в цьому векторі, шукаючи вперед від індексу, або повертає -1, якщо елемент не знайдено.
insertElementAt(E obj, int index) Вставляє вказаний об’єкт як компонент у цей вектор за вказаним індексом.
пусто() Перевіряє, чи цей вектор не має компонентів.
ітератор() Повертає ітератор над елементами цього списку в правильній послідовності.
lastElement() Повертає останній компонент вектора.
lastIndexOf(Object o)

Повертає індекс останнього входження зазначеного елемента в цьому векторі,

або -1, якщо цей вектор не містить елемент.

Завантажити xvideoservicethief ubuntu 14.04
lastIndexOf(Object o, int index) Повертає індекс останнього входження зазначеного елемента в цьому векторі, шукаючи назад від індексу, або повертає -1, якщо елемент не знайдено.
listIterator() Повертає ітератор списку над елементами цього списку (у правильній послідовності).
listIterator(індекс int)

Повертає ітератор списку над елементами цього списку (у належній послідовності),

починаючи з вказаної позиції в списку.

видалити (індекс) Видаляє елемент у вказаній позиції в цьому векторі.
видалити (об'єкт o) Видаляє перше входження зазначеного елемента в цьому векторі. Якщо вектор не містить елемента, він не змінюється.
removeAll(Collection c) Видаляє з цього вектора всі його елементи, що містяться у вказаній колекції.
removeAllElements() Видаляє всі компоненти з цього вектора та встановлює його розмір до нуля.
removeElement(Object obj) Видаляє перше (з найнижчим індексом) входження аргументу з цього вектора.
removeElementAt(int index) Видаляє компонент за вказаним індексом.
removeIf (фільтр предикатів) Видаляє всі елементи цієї колекції, які задовольняють заданий предикат.

removeRange(int fromIndex,

int toIndex)

Видаляє з цього списку всі елементи, індекс яких знаходиться між fromIndex, включно, та toIndex, винятково.
replaceAll(оператор UnaryOperator)Замінює кожен елемент цього списку результатом застосування оператора до цього елемента.
retainAll(Collection c) Зберігає лише елементи цього вектора, які містяться у вказаній колекції.
set(int index, E element) Замінює елемент у вказаній позиції в цьому векторі вказаним елементом.
setElementAt(E obj, int index) Встановлює компонент за вказаним індексом цього вектора як вказаний об’єкт.
setSize(int newSize) Встановлює розмір цього вектора.
розмір() Повертає кількість компонентів у цьому векторі.
сортувати (компаратор c) Сортує цей список відповідно до порядку, індукованого вказаним компаратором.
spliterator() Створює пізній зв’язувальний і швидкий Spliterator над елементами в цьому списку.
subList(int fromIndex, int toIndex) Повертає перегляд частини цього списку між fromIndex, включно, та toIndex, винятково.
toArray() Повертає масив, що містить усі елементи цього вектора в правильному порядку.
toArray(T[] a) Повертає масив, що містить усі елементи цього вектора в правильному порядку; тип середовища виконання поверненого масиву – це тип зазначеного масиву.
toString() Повертає рядкове представлення цього вектора, що містить рядкове представлення кожного елемента.
trimToSize() Обрізає ємність цього вектора до поточного розміру вектора.

Давайте спочатку обговоримо та реалізуємо, як створити та використовувати вектор, перш ніж перейти до методів цього класу.

приклад:

Java
// Java Program to Demonstrate Working of Vector // Via Creating and Using It // Importing required classes import java.io.*; import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Size of the Vector int n = 5; // Declaring the Vector with // initial size n Vector v = новий вектор (n); // Додавання нових елементів у // кінець вектора for (int i = 1; i<= n; i++) v.add(i); // Printing elements System.out.println(v); // Remove element at index 3 v.remove(3); // Displaying the vector // after deletion System.out.println(v); // iterating over vector elements // using for loop for (int i = 0; i < v.size(); i++) // Printing elements one by one System.out.print(v.get(i) + ' '); } }>

Вихід
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

Примітка:

  • Якщо приріст вектора не вказано, його ємність подвоюватиметься в кожному циклі приросту.
  • Ємність вектора не може бути нижче розміру, вона може дорівнювати йому.

Виконання різноманітних операцій над класом Vector у Java

Давайте обговоримо різні операції над класом Vector, які перераховані нижче:

  1. Додавання елементів
  2. Оновлення елементів
  3. Видалення елементів
  4. Ітерація елементів

Операція 1: Додавання елементів

Щоб додати елементи до вектора, ми використовуємо додати() метод. Цей метод перевантажений для виконання кількох операцій на основі різних параметрів. Нижче наведено їх список:

mergesort java
  • add(Object): Цей метод використовується для додавання елемента в кінець вектора.
  • add(int index, Object): Цей метод використовується для додавання елемента за певним індексом у векторі.

приклад:

Java
// Java Program to Add Elements in Vector Class // Importing required classes import java.io.*; import java.util.*; // Main class // AddElementsToVector class GFG { // Main driver method public static void main(String[] arg) { // Case 1 // Creating a default vector Vector v1 = new Vector(); // Adding custom elements // using add() method v1.add(1); v1.add(2); v1.add('geeks'); v1.add('forGeeks'); v1.add(3); // Printing the vector elements to the console System.out.println('Vector v1 is ' + v1); // Case 2 // Creating generic vector Vector v2 = новий вектор (); // Додавання спеціальних елементів // за допомогою методу add() v2.add(1); v2.add(2); v2.add(3); // Виведення векторних елементів на консоль System.out.println('Вектор v2 є ' + v2); } }>

Вихід:


Vector v1 is [1, 2, geeks, forGeeks, 3] Vector v2 is [1, 2, 3]>

Операція 2: Оновлення елементів

Після додавання елементів, якщо ми хочемо змінити елемент, це можна зробити за допомогою набір() метод. Оскільки вектор індексується, елемент, який ми хочемо змінити, посилається за індексом елемента. Таким чином, цей метод приймає індекс і оновлений елемент, який буде вставлено в цей індекс.

приклад

Java
// Java code to change the // elements in vector class import java.util.*; // Driver Class public class UpdatingVector { // Main Function public static void main(String args[]) { // Creating an empty Vector Vector vec_tor = новий вектор (); // Використання методу add() для додавання елементів у вектор vec_tor.add(12); vec_tor.add(23); vec_tor.add(22); vec_tor.add(10); vec_tor.add(20); // Відображення вектора System.out.println('Вектор: ' + vec_tor); // Використання методу set() для заміни 12 на 21 System.out.println('Об'єкт, який буде замінено: ' + vec_tor.set(0, 21)); // Використання методу set() для заміни 20 на 50 System.out.println('Об'єкт, який буде замінено: ' + vec_tor.set(4, 50)); // Відображення зміненого вектора System.out.println('Новий вектор:' + vec_tor); } }>

Вихід
Vector: [12, 23, 22, 10, 20] The Object that is replaced is: 12 The Object that is replaced is: 20 The new Vector is:[21, 23, 22, 10, 50]>

Операція 3: Видалення елементів

Щоб видалити елемент із вектора, ми можемо використати видалити() метод. Цей метод перевантажений для виконання кількох операцій на основі різних параметрів. Вони є:

  • видалити (об'єкт): Цей метод використовується для видалення об’єкта з вектора. Якщо таких об’єктів декілька, видаляється перший випадок об’єкта.
  • видалити (індекс індексу): Оскільки вектор індексується, цей метод приймає ціле число, яке просто видаляє елемент, присутній у цьому конкретному індексі у векторі. Після видалення елемента всі елементи переміщуються вліво, щоб заповнити простір, а індекси об’єктів оновлюються.

приклад

Java
// Java code illustrating the removal // of elements from vector import java.util.*; import java.io.*; class RemovingElementsFromVector { public static void main(String[] arg) { // Create default vector of capacity 10 Vector v = new Vector(); // Add elements using add() method v.add(1); v.add(2); v.add('Geeks'); v.add('forGeeks'); v.add(4); // Removing first occurrence element at 1 v.remove(1); // Checking vector System.out.println('after removal: ' + v); } }>

Вихід:

after removal: [1, Geeks, forGeeks, 4]>

Операція 4: Ітерація вектора

Існує кілька способів повторення вектора. Найвідомішими способами є використання основного циклу for у поєднанні з a отримати() метод для отримання елемента за певним індексом і передовий для петлі .

приклад

Java
// Java program to iterate the elements // in a Vector import java.util.*; public class IteratingVector { public static void main(String args[]) { // create an instance of vector Vectorv = новий вектор(); // Додати елементи за допомогою методу add() v.add('Geeks'); v.add('Виродки'); v.add(1, 'Для'); // Використання методу Get і // циклу for for (int i = 0; i< v.size(); i++) { System.out.print(v.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : v) System.out.print(str + ' '); } }>

Вихід
Geeks For Geeks Geeks For Geeks>

Примітка: Дайте прочитати ArrayList проти класу Vector в Java щоб краще це зрозуміти.

У Java клас Vector є частиною Java Collections Framework і забезпечує реалізацію динамічного масиву інтерфейсу List. Він був доданий в оригінальній версії Java (Java 1.0) і надає ряд методів для маніпулювання елементами вектора, включаючи додавання, вставлення та видалення елементів.

список дротиків

Ось простий приклад, який демонструє, як використовувати вектор у Java:

Java
import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = новий вектор (3, 2); // Додати елементи до вектора v.addElement(1); v.addElement(2); v.addElement(3); // Вставити елемент з індексом 1 v.insertElementAt(0, 1); // Видалення елемента з індексом 2 v.removeElementAt(2); // Надрукувати елементи вектора for (int i : v) { System.out.println(i); } } }>

Вихід
1 0 3>

Зауважте, що клас Vector є синхронізованим, тобто кілька потоків можуть отримати доступ до одного вектора без проблем. Однак ця синхронізація коштує зниження продуктивності, тому, якщо вам не потрібно ділитися вектором між декількома потоками, зазвичай краще використовувати альтернативний клас, як-от ArrayList, який не синхронізований.

Переваги використання Vector в Java:

  1. Синхронізація: як згадувалося раніше, Vector синхронізується, що робить його безпечним для використання в багатопоточному середовищі.
  2. Динамічний розмір. Розмір вектора може динамічно збільшуватися або зменшуватися в міру додавання або видалення елементів, тому вам не доведеться турбуватися про встановлення початкового розміру, який вміщуватиме всі елементи.
  3. Підтримка застарілих версій: Vector був частиною Java з моменту її створення та підтримується досі, тому це хороший варіант, якщо вам потрібно працювати зі старішим кодом Java, який використовує Vector.

Недоліки використання Vector в Java:

  1. Продуктивність: синхронізація у Vector може призвести до нижчої продуктивності порівняно з іншими класами колекції, такими як ArrayList.
  2. Застарілий код: Хоча Vector все ще підтримується, новіший код Java часто пишеться з використанням більш сучасних класів колекції, тому може бути важче знайти приклади та підтримку для Vector.
  3. Непотрібні накладні витрати: якщо вам не потрібні функції синхронізації Vector, їх використання додасть непотрібних накладних витрат на ваш код.

Довідник

Хорошим довідником для вивчення Java Collections Framework і Vector є Java Collections від Naftalin і Wadler. У цій книзі представлено повний погляд на структуру колекцій Java, включаючи Vector, і містить багато прикладів і вправ, які допоможуть вам зрозуміти, як ефективно використовувати ці класи.