Рекомендуем, 2024

Выбор редакции

Разница между 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, который также является стандартным классом коллекции, и также реализует 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 и векторами

  1. Несколько потоков могут работать с ArrayList одновременно, поэтому он считается несинхронизированным . В отличие от ArrayList, только один поток может работать с вектором одновременно; следовательно это называется Синхронизировано .
  2. В ранней версии Java некоторые классы и интерфейсы обеспечивали методы для хранения объектов, которые они называли классами Legacy. Вектор является одним из классов Legacy в Java. Позднее эти устаревшие классы были реинжинирированы для поддержки класса Collection, тогда как класс ArrayList является стандартным классом Collection.
  3. Когда предел массива полностью используется и новый объект добавляется рядом с исчерпанным массивом, его размер увеличивается в обоих случаях, т.е. как в ArrayList, так и в Vector, но разница в том, что в ArrayList, если не указан размер увеличивается на 50% от текущего массива, тогда как в массиве Vector размер удваивается, если значение приращения не указано.
  4. Vector использует Enumeration, а также Iterator для обхода массива, тогда как ArrayList использует итератор только для обхода массива.
  5. Поскольку ArrayList не синхронизирован и многие потоки могут работать с ним одновременно, его производительность лучше, чем у Vector, с которым одновременно может работать только один поток.

сходства:

  1. ArrayList и Vector оба определены в пакете java.util.
  2. ArrayList и Vector расширяют класс AbsractList.
  3. ArrayList и Vector оба реализуют интерфейс List.
  4. ArrayList и Vectors используются для создания динамического массива, который увеличивается по мере необходимости.
  5. ArrayList и Vector содержат ссылки на объекты.

Заключение:

В заключение я говорю, что использование ArrayList лучше, чем использование Vector, поскольку оно работает быстрее и лучше.

Top