Разница между Arraylist и Vector

Разница между Arraylist и Vector
Разница между Arraylist и Vector

Видео: Разница между Arraylist и Vector

Видео: Разница между Arraylist и Vector
Видео: ArrayList vs Vector Java собеседование 2024, Июль
Anonim

Arraylist vs Vector

Arraylist можно рассматривать как динамический массив, размер которого может увеличиваться. По этой причине программисту не нужно знать размер массива, когда он/она его определяет. Вектор также можно рассматривать как массив, который может увеличиваться в размерах. Векторы можно легко выделить и использовать, когда требуемый размер хранилища неизвестен до времени выполнения.

Что такое Arraylist?

Arraylist можно рассматривать как динамический массив, размер которого может увеличиваться. Поэтому массивы идеально подходят для использования в ситуации, когда вы не знаете размер элементов, требуемых во время объявления. В Java массивы могут хранить только объекты, они не могут напрямую хранить примитивные типы (вы можете поместить примитивные типы внутрь объекта или использовать классы-оболочки примитивных типов). Как правило, массивы снабжены методами для вставки, удаления и поиска. Временная сложность доступа к элементу составляет o (1), а вставка и удаление имеют временную сложность o (n). В Java массивы можно просматривать с помощью циклов foreach, итераторов или просто с помощью индексов. В Java массивы были введены с версии 1.2 и являются частью Java Collections Framework.

Что такое вектор?

Vector также является массивом, который может увеличиваться в размерах. Векторы можно легко выделить и использовать, когда требуемый размер хранилища неизвестен до времени выполнения. Векторы также могут содержать только объекты и не могут содержать примитивные типы. Векторы синхронизированы, поэтому их можно безопасно использовать в многопоточных средах. Векторы снабжены методами добавления объектов, удаления объектов и поиска объектов. Подобно arraylist в java, векторы можно перемещать с помощью циклов foreach, итераторов или просто с помощью индексов. Когда дело доходит до Java, векторы были включены с первой версии Java.

В чем разница между Arraylist и Vector?

Несмотря на то, что массивы массивов и векторы очень похожи на динамические массивы, которые могут увеличиваться в размерах, у них есть некоторые важные отличия. Основное различие между массивами массивов и векторами заключается в том, что векторы синхронизированы, тогда как массивы массивов несинхронизированы. Поэтому использование массивов в многопоточных средах не подходит, в то время как векторы можно безопасно использовать в многопоточных средах (поскольку они потокобезопасны). Но синхронизация в векторах приведет к снижению производительности. Поэтому было бы не очень хорошей идеей использовать векторы в однопоточной среде. Внутри как массивы, так и векторы используют массивы для хранения объектов. Когда текущего пространства недостаточно, vectors удваивает размер своего внутреннего массива, а arraylists увеличивает размер своего внутреннего массива на 50%. Но при использовании как массивов массивов, так и векторов, задав подходящую начальную емкость, можно избежать ненужного изменения размера внутреннего массива. В ситуации, когда скорость роста данных известна, использование векторов было бы более подходящим, поскольку можно было бы определить значение приращения векторов.

Рекомендуемые: