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%. Но при использовании как массивов массивов, так и векторов, задав подходящую начальную емкость, можно избежать ненужного изменения размера внутреннего массива. В ситуации, когда скорость роста данных известна, использование векторов было бы более подходящим, поскольку можно было бы определить значение приращения векторов.