Давайте изучим некоторые другие различия с помощью сравнительной таблицы, показанной ниже.
Сравнительная таблица
Основа для сравнения | ArrayList | Вектор |
---|---|---|
основной | Класс ArrayList не синхронизирован. | Векторный класс синхронизирован. |
Легаси класс | ArrayList - это стандартный класс Collection. | Vector - это устаревший класс, переработанный для поддержки класса коллекции. |
Декларация класса | класс ArrayList | Вектор класса |
перераспределение | Если не указано, ArrayList увеличивается вдвое. | Если не указано, вектор увеличивается в два раза. |
Спектакль | Поскольку ArrayList не синхронизирован, он работает быстрее, чем Vector. | Поскольку Vector синхронизирован, он работает медленнее, чем ArrayList. |
Перечисление / Итератор | ArrayList использует интерфейс Iterator для обхода объектов, хранящихся в ArrayList. | Вектор использует перечисление, а также интерфейс итератора для перемещения по объектам, хранящимся в векторах. |
Определение ArrayList
ArrayList относится к списку стандартных классов коллекции. Класс ArrayList определен внутри пакета java.util, он расширяет класс AbstractList, который также является стандартным классом коллекции, и также реализует List, интерфейс, определенный в интерфейсах коллекции. В Java стандартный массив всегда имеет фиксированную длину. Это означает, что однажды создан; он динамически не увеличивается и не уменьшается в размере. Таким образом, вы должны заранее знать длину используемого вами массива. Но иногда может случиться так, что требуемая длина будет обнаружена во время выполнения, поэтому, чтобы справиться с такой ситуацией, Java представил ArrayList.
ArrayList - это класс, используемый для динамического создания массива, который содержит ссылки на объекты. Этот массив может увеличиваться в размере по мере необходимости. Объявление класса выглядит следующим образом:
класс ArrayList
Здесь E указывает тип объектов, которые будет содержать массив. Созданный массив имеет переменную длину, и он увеличивается и уменьшается в размере, когда объекты добавляются или удаляются из списка.
ArrayList не синхронизирован, это означает, что более одного потока могут работать с массивом одновременно. Например, если один поток добавляет ссылку на объект в массив, а другой поток одновременно удаляет ссылку на объект из того же массива. Создание динамического массива с использованием класса ArrayList:
ArrayList S1 = new ArrayList (); System.out.println («Начальный размер S1:» + S1.size ()); S1.add ( "Т"); S1.add ( "С"); S1.add ( "Н"); S1.add (1, "Е"); System.out.println («После добавления S1 содержит:» + S1); System.out.println ("Размер S1 после добавления:" + S1.size ()); S1.remove ("Т"); S1.remove (2); System.out.println («После удаления S1 содержит:» + S1); System.out.println ("Размер S1 после удаления:" + S1.size ()); // OutputInitial size S1: 0 После добавления S1 содержит: [T, E, C, H]; Размер S1 после добавления: 4 После удаления S1 содержит: [E, H] Размер S1 после удаления: 2
В приведенном выше коде вы можете видеть это; Я создал массив объектов строкового типа. Я добавил некоторые объекты в массив S1 с помощью метода add (), а затем удалил некоторые объекты с помощью метода remove (). Вы можете наблюдать, если вы не укажете начальный размер массива, он будет иметь длину 0. Как вы можете видеть, размер массива увеличивается и уменьшается по мере добавления и удаления элементов.
Определение вектора
Vector - это класс Legacy, который был реинжинирирован для поддержки класса коллекции в иерархии Collection Framework. Класс vector также определен в пакете java.util, расширен классом AbstractList и реализован интерфейсом List . Класс Vector объявлен следующим образом:
Вектор класса
Здесь E определяет тип объекта, который будет храниться в массиве. Массив, созданный с использованием класса Vector, имеет переменную длину. Увеличивается в два раза, если приращение не указано. Давайте разберемся с созданием массива с помощью Vector.
Вектор V = новый вектор (1, 1); V.addElement ( "Технология"); V.addElement ( "Различие"); System.out.println («Емкость после 2 сложения:» + V.capacity ()); V.addElement ( "Между"); V.addElement ( "Векторы"); System.out.println («Текущая емкость:» + V.capacity ()); // Выходная мощность после 2 сложения: 2 Текущая емкость: 4
В приведенном выше коде вы можете видеть, что я, в частности, упомянул размер и значение приращения в конструкторе Vector соответственно при объявлении массива строковых объектов. Следовательно, вы можете заметить, что, когда предел массива заканчивается, он увеличивается на значение, предоставленное конструктору при объявлении.
Ключевые различия между ArrayList и векторами
- Несколько потоков могут работать с ArrayList одновременно, поэтому он считается несинхронизированным . В отличие от ArrayList, только один поток может работать с вектором одновременно; следовательно это называется Синхронизировано .
- В ранней версии Java некоторые классы и интерфейсы обеспечивали методы для хранения объектов, которые они называли классами Legacy. Вектор является одним из классов Legacy в Java. Позднее эти устаревшие классы были реинжинирированы для поддержки класса Collection, тогда как класс ArrayList является стандартным классом Collection.
- Когда предел массива полностью используется и новый объект добавляется рядом с исчерпанным массивом, его размер увеличивается в обоих случаях, т.е. как в ArrayList, так и в Vector, но разница в том, что в ArrayList, если не указан размер увеличивается на 50% от текущего массива, тогда как в массиве Vector размер удваивается, если значение приращения не указано.
- Vector использует Enumeration, а также Iterator для обхода массива, тогда как ArrayList использует итератор только для обхода массива.
- Поскольку ArrayList не синхронизирован и многие потоки могут работать с ним одновременно, его производительность лучше, чем у Vector, с которым одновременно может работать только один поток.
сходства:
- ArrayList и Vector оба определены в пакете java.util.
- ArrayList и Vector расширяют класс AbsractList.
- ArrayList и Vector оба реализуют интерфейс List.
- ArrayList и Vectors используются для создания динамического массива, который увеличивается по мере необходимости.
- ArrayList и Vector содержат ссылки на объекты.
Заключение:
В заключение я говорю, что использование ArrayList лучше, чем использование Vector, поскольку оно работает быстрее и лучше.