Разница между ArrayList и Vector в Java
Содержание
ArrayList и Vector оба являются классами в иерархии Collection Framework. ArrayList и Vector, оба используются для создания динамического массива объектов, размер которого может увеличиваться по мере необходимости. Существует два основных отличия ArrayList и Vector в том, что Vector принадлежит классам Legacy, которые впоследствии были реинжинирированы для поддержки классов коллекции, тогда как ArrayList является стандартным классом коллекции. Другое важное отличие состоит в том, что ArrayList не синхронизирован с другой стороны; Вектор синхронизирован.
Давайте изучим некоторые другие различия с помощью сравнительной таблицы, показанной ниже.
- Сравнительная таблица
- Определение
- Ключевые отличия
- сходства
- Вывод
Сравнительная таблица
Основа для сравнения | ArrayList | Вектор |
---|---|---|
основной | Класс ArrayList не синхронизирован. | Векторный класс синхронизирован. |
Легаси класс | ArrayList - это стандартный класс Collection. | Vector - это устаревший класс, переработанный для поддержки класса коллекции. |
Декларация класса | класс ArrayList | Вектор класса |
перераспределение | Если не указано, ArrayList увеличивается вдвое. | Если не указано, вектор увеличивается в два раза. |
Спектакль | Поскольку ArrayList не синхронизирован, он работает быстрее, чем Vector. | Поскольку Vector синхронизирован, он работает медленнее, чем ArrayList. |
Перечисление / Итератор | ArrayList использует интерфейс Iterator для обхода объектов, хранящихся в ArrayList. | Вектор использует перечисление, а также интерфейс итератора для перемещения по объектам, хранящимся в векторах. |
Определение ArrayList
ArrayList относится к списку стандартных классов коллекции. Класс ArrayList определен внутри java.util пакет, он расширяет AbstractList класс, который также является стандартным классом коллекции, и он также реализует Списокинтерфейс, определенный в интерфейсах коллекции. В Java стандартный массив всегда имеет фиксированную длину. Это означает, что однажды создан; он не динамически растет или сокращается в размере. Таким образом, вы должны заранее знать длину используемого вами массива. Но иногда может случиться так, что требуемая длина будет обнаружена во время выполнения, поэтому, чтобы справиться с такой ситуацией, Java представил ArrayList.
ArrayList - это класс, используемый для динамического создания массива, который содержит ссылки на объекты. Этот массив может увеличиваться в размере по мере необходимости. Объявление класса выглядит следующим образом:
класс ArrayList Здесь E указывает тип объектов, которые будет содержать массив. Созданный массив имеет переменную длину, и он увеличивается и уменьшается в размере, когда объекты добавляются или удаляются из списка. ArrayList не синхронизирован, это означает, что более одного потока могут работать с массивом одновременно. Например, если один поток добавляет ссылку на объект в массив, а другой поток одновременно удаляет ссылку на объект из того же массива. Создание динамического массива с использованием класса ArrayList: ArrayList В приведенном выше коде вы можете видеть это; Я создал массив объектов строкового типа. Я добавил некоторые объекты в массив S1 с помощью метода add (), а затем удалил некоторые объекты с помощью метода remove (). Вы можете наблюдать, если вы не укажете начальный размер массива, он будет иметь длину «0». Как вы можете видеть, размер массива увеличивается и уменьшается по мере добавления и удаления элементов. Vector - это класс Legacy, который был реинжинирирован для поддержки класса коллекции в иерархии Collection Framework. Класс векторов также определен в java.util пакет, расширенный AbstractList класс и реализуется Список интерфейс. Класс Vector объявлен следующим образом: Вектор класса Здесь E определяет тип объекта, который будет храниться в массиве. Массив, созданный с использованием класса Vector, имеет переменную длину. Увеличивается в два раза, если приращение не указано. Давайте разберемся с созданием массива с помощью Vector. Вектор В приведенном выше коде вы можете видеть, что я, в частности, упомянул размер и значение приращения в конструкторе Vector соответственно при объявлении массива строковых объектов. Следовательно, вы можете заметить, что, когда предел массива заканчивается, он увеличивается на значение, предоставленное конструктору при объявлении. В заключение я говорю, что использование ArrayList лучше, чем использование Vector, поскольку оно работает быстрее и лучше.
Определение вектора
сходства:
Вывод: