Разница между ArrayList и Vector в Java

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 1 Май 2024
Anonim
Уроки Java - №41 ArrayList, LinkedList и Vector. В чём разница?
Видео: Уроки Java - №41 ArrayList, LinkedList и Vector. В чём разница?

Содержание


ArrayList и Vector оба являются классами в иерархии Collection Framework. ArrayList и Vector, оба используются для создания динамического массива объектов, размер которого может увеличиваться по мере необходимости. Существует два основных отличия ArrayList и Vector в том, что Vector принадлежит классам Legacy, которые впоследствии были реинжинирированы для поддержки классов коллекции, тогда как ArrayList является стандартным классом коллекции. Другое важное отличие состоит в том, что ArrayList не синхронизирован с другой стороны; Вектор синхронизирован.

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

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. сходства
  5. Вывод

Сравнительная таблица

Основа для сравнения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 = новый ArrayList(); System.out.ln («Начальный размер S1:» + S1.size ()); S1.add ( "Т"); S1.add ( "С"); S1.add ( "Н"); S1.add (1, "Е"); System.out.ln («После добавления S1 содержит:» + S1); System.out.ln («Размер S1 после добавления: + S1.size ()); S1.remove ("Т"); S1.remove (2); System.out.ln («После удаления S1 содержит:» + S1); System.out.ln («Размер S1 после удаления: + S1.size ()); // OutputInitial size S1: 0 После добавления S1 содержит:; Размер S1 после добавления: 4 После удаления S1 содержит: Размер S1 после удаления: 2

В приведенном выше коде вы можете видеть это; Я создал массив объектов строкового типа. Я добавил некоторые объекты в массив S1 с помощью метода add (), а затем удалил некоторые объекты с помощью метода remove (). Вы можете наблюдать, если вы не укажете начальный размер массива, он будет иметь длину «0». Как вы можете видеть, размер массива увеличивается и уменьшается по мере добавления и удаления элементов.

Определение вектора

Vector - это класс Legacy, который был реинжинирирован для поддержки класса коллекции в иерархии Collection Framework. Класс векторов также определен в java.util пакет, расширенный AbstractList класс и реализуется Список интерфейс. Класс Vector объявлен следующим образом:

Вектор класса

Здесь E определяет тип объекта, который будет храниться в массиве. Массив, созданный с использованием класса Vector, имеет переменную длину. Увеличивается в два раза, если приращение не указано. Давайте разберемся с созданием массива с помощью Vector.

Вектор V = новый вектор(1,1); V.addElement ( "Технология"); V.addElement ( "Различие"); System.out.ln («Емкость после 2 сложения:» + V.capacity ()); V.addElement ( "Между"); V.addElement ( "Векторы"); System.out.ln («Текущая емкость:» + V.capacity ()); // Выходная мощность после 2 сложения: 2 Текущая емкость: 4

В приведенном выше коде вы можете видеть, что я, в частности, упомянул размер и значение приращения в конструкторе Vector соответственно при объявлении массива строковых объектов. Следовательно, вы можете заметить, что, когда предел массива заканчивается, он увеличивается на значение, предоставленное конструктору при объявлении.

  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, поскольку оно работает быстрее и лучше.