Понимание Java Vector: использование, особенности и сравнение с ArrayList
Понимание Java Vector
Это руководство объясняет класс Java Vector, его ключевые методы и отличия от ArrayList. Узнайте, когда выбирать Vector для обеспечения потокобезопасности и какие существуют соображения производительности.
Java Vector против ArrayList
И ArrayList, и Vector предоставляют динамические массивы, но различаются в обработке параллелизма:
- Vector синхронизирует каждый вызов метода, захватывая блокировку на экземпляре перед выполнением.
- ArrayList по умолчанию не синхронизирован; потокобезопасность можно добавить с помощью
Collections.synchronizedList()при необходимости.
Из-за блокировки на каждую операцию Vector может создавать накладные расходы в многопоточных средах, тогда как ArrayList обычно обеспечивает лучшую производительность, когда потокобезопасность не требуется.
Совет: Предпочитайте ArrayList для большинства приложений. Используйте Vector только когда это требуется устаревшим кодом или когда нужна встроенная синхронизация без дополнительных обёрток.
Создание Vector
Вы можете создать экземпляр Vector с обобщённым типом:
Vector<Type> vector = new Vector<>();
Примеры:
// Vector целых чисел
Vector<Integer> numbers = new Vector<>();
// Vector строк
Vector<String> words = new Vector<>();
Ключевые методы Vector
Класс Vector предлагает полный набор операций списка, зеркалящий ArrayList. Некоторые часто используемые методы:
add(E element)— добавить элемент в конец.add(int index, E element)— вставить в конкретную позицию.addAll(Collection<? extends E> c)— массовое добавление.get(int index)— получить элемент по индексу.remove(int index)— удалить по индексу.clear()— удалить все элементы.size()— текущее количество элементов.contains(Object o)— проверка существования.toArray()— преобразование в массив.toString()— строковое представление.set(int index, E element)— замена по индексу.
Добавление элементов в Vector
add(element)— добавляет элемент в конец.add(index, element)— вставляет по конкретному индексу.addAll(vector)— добавляет все элементы из другого вектора.
Пример:
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> mammals = new Vector<>();
mammals.add("Dog");
mammals.add("Horse");
mammals.add(2, "Cat");
System.out.println("Vector: " + mammals);
Vector<String> animals = new Vector<>();
animals.add("Crocodile");
animals.addAll(mammals);
System.out.println("New Vector: " + animals);
}
}
Вывод
Vector: [Dog, Horse, Cat] New Vector: [Crocodile, Dog, Horse, Cat]
Доступ к элементам Vector
get(index)— получение элемента по индексу.iterator()— получение итератора для последовательного доступа.
Пример:
import java.util.Iterator;
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> animals = new Vector<>();
animals.add("Dog");
animals.add("Horse");
animals.add("Cat");
String element = animals.get(2);
System.out.println("Element at index 2: " + element);
Iterator<String> iter = animals.iterator();
System.out.print("Vector: ");
while(iter.hasNext()) {
System.out.print(iter.next() + ", ");
}
}
}
Вывод
Element at index 2: Cat Vector: Dog, Horse, Cat,
Удаление элементов из Vector
remove(index)— удаляет элемент в указанной позиции.clear()— эффективно удаляет все элементы.
Пример:
import java.util.Vector;
class Main {
public static void main(String[] args) {
Vector<String> animals = new Vector<>();
animals.add("Dog");
animals.add("Horse");
animals.add("Cat");
System.out.println("Initial Vector: " + animals);
String removed = animals.remove(1);
System.out.println("Removed Element: " + removed);
System.out.println("New Vector: " + animals);
animals.clear();
System.out.println("Vector after clear(): " + animals);
}
}
Вывод
Initial Vector: [Dog, Horse, Cat] Removed Element: Horse New Vector: [Dog, Cat] Vector after clear(): []
Дополнительные методы Vector
| Метод | Описание |
|---|---|
set(int index, E element) | Заменяет элемент в указанной позиции. |
size() | Возвращает количество элементов. |
toArray() | Преобразует содержимое в массив. |
toString() | Строковое представление вектора. |
contains(Object o) | Проверяет, содержит ли вектор указанный элемент. |
java
- Освоение операторов Java: типы, синтаксис и практические примеры
- Комментарии в Java: типы, использование и лучшие практики
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Освоение строк в Java: создание, методы и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
- Java 8: Полное справочное руководство (Quick Reference)