Что такое Vector

`Vector` — это класс, который реализует динамический массив для хранения объектов. Он является частью Java Collection Framework и находится в пакете `java.util`. Он очень похож на `ArrayList`, но с несколькими ключевыми отличиями:

1. Синхронизация: В отличие от `ArrayList`, большинство методов в нем синхронизированы, что означает, что они потокобезопасны. Это означает, что объект `Vector` можно безопасно использовать в многопоточных средах без внешней синхронизации. Однако эта потокобезопасность идёт за счёт производительности, поэтому `Vector` может работать медленнее `ArrayList` в однопоточных приложениях.

2. Расширение: Как и `ArrayList`, он автоматически увеличивает свой размер, когда в него добавляются новые элементы. Однако `Vector` позволяет указать размер инкремента — значение, на которое будет увеличиваться емкость вектора при необходимости расширения. Если размер инкремента не задан, то по умолчанию он удваивает свой размер.

Основные методы:

  • `add(Object element)`: добавляет элемент в конец вектора.
  • `get(int index)`: возвращает элемент по указанному индексу.
  • `remove(int index)`: удаляет элемент по указанному индексу.
  • `size()`: возвращает количество элементов в векторе.
  • `isEmpty()`: возвращает `true`, если вектор не содержит элементов.

Пример:

import java.util.Vector;

public class VectorExample {
    public static void main(String[] args) {
        Vector<String> vector = new Vector<>();
        vector.add("Java");
        vector.add("Python");
        vector.add("C++");

        System.out.println("Первый элемент вектора: " + vector.get(0));

        for(String lang : vector) {
            System.out.println(lang);
        }
    }
}

Хотя `Vector` и является довольно старым классом, в современном коде он используется реже в пользу более новых классов коллекций, таких как `ArrayList` или `CopyOnWriteArrayList`, особенно в однопоточных приложениях или там, где потокобезопасность обеспечивается другими средствами. Основной сценарий использования `Vector` сегодня — это ситуации, когда требуется встроенная синхронизация доступа к коллекции из разных потоков.

March 7, 2024, easyoffer