Каковы различия между ArrayList и Vector в Java?

Java ArrayList и Vector реализуют интерфейс List и поддерживают порядок вставки. Но между ArrayList и Vector есть некоторые отличия.

Java ArrayList и Vector реализуют интерфейс List и поддерживают порядок вставки. Но между ArrayList и Vector есть некоторые отличия....

Вектор синхронизируется по умолчанию, а ArrayList - нет.

Что такое синхронизация?

Когда мы запускаем два или более потока внутри программы, может возникнуть ситуация, когда несколько потоков пытаются получить доступ к одному и тому же ресурсу, и, наконец, они могут создать непредвиденный результат из-за проблем с параллелизмом. Синхронизированное ключевое слово заставляет поток получать блокировку при вводе метода, так что только один поток может выполнить метод в одно и то же время. Обычно это называется созданием класса потокобезопасным. Без синхронизации не гарантируется, в каком порядке происходит чтение и запись, возможно, оставляя переменную с мусором.

То, что означает это (Синхронизация), состоит в том, что только один поток может вызывать методы по Vector за раз, и есть небольшие накладные расходы при приобретении блокировки. Важно отметить, что вы можете заставить ArrayList также синхронизироваться, передав объект arraylist методу Collections.synchronizedList().

Рост данных

Внутри, как ArrayList, так и Vector удерживают их содержимое с помощью массива. Оба могут расти и сжиматься динамически, чтобы поддерживать оптимальное использование хранилища, однако способ изменения размеров отличается. ArrayList создается с начальным размером по умолчанию 10. Если этот размер превышен, коллекция автоматически увеличивается до половины размера по умолчанию, равным 15. Векторные приращения 100% означают удвоение размера массива, если общее количество элементов превышает его емкость ,

Производительность

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

Перемещение (Итератор)

Элементы ArrayList можно перемещать с помощью Iterator, ListIterator и с использованием обычного или расширенного цикла. Vector использует интерфейс Enumeration для перемещения элементов.

Наследство

Этот вектор не был частью структуры коллекции, позже он был включен в коллекции. Его можно считать устаревшим кодом. В коллекции Vector Collection ничего не может быть. Поэтому Vector следует избегать.

Реализация ArrayList

Выход

Выполнение вектора

Выход

Источник: http://net-informations.com/Java/cJava/vector.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *