Что такое 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