Аррайлист против Вектор
Массив можно рассматривать как динамический массив, который может увеличиваться в размере. По этой причине программисту не нужно знать размер массива, когда он определяет его. Вектор также можно рассматривать как массив, который может увеличиваться в размере. Векторы могут быть легко распределены и могут использоваться, когда требуемый размер хранилища неизвестен до времени выполнения.
Что такое Arraylist?
Массив можно рассматривать как динамический массив, который может увеличиваться в размере. Поэтому arraylists идеальны для использования в ситуации, когда вы не знаете размер элементов, требуемых во время объявления. В Java массивы могут содержать только объекты, они не могут напрямую содержать примитивные типы (вы можете поместить примитивные типы в объект или использовать классы-обертки примитивных типов). Как правило, arraylists предоставляются методы для вставки, удаления и поиска. Временная сложность доступа к элементу составляет o (1), в то время как вставка и удаление имеют временную сложность o (n). В Java массивы могут быть просмотрены с помощью циклов foreach, итераторов или просто с помощью индексов. В Java arraylists были введены с версии 1.2, и это является частью Java Collections Framework.
Что такое вектор?
Вектор также является массивом, который может увеличиваться в размере. Векторы могут быть легко распределены и могут использоваться, когда требуемый размер хранилища неизвестен до времени выполнения. Векторы также могут содержать только объекты и не могут содержать примитивные типы. Векторы синхронизированы, поэтому их можно безопасно использовать в многопоточных средах. Векторы снабжены методами для добавления объектов, удаления объектов и поиска объектов. Подобно arraylist в java, векторы можно обойти, используя циклы foreach, итераторы или просто используя индексы. Когда дело доходит до Java, векторы были включены с первой версии Java.
В чем разница между Arraylist и Vector?
Хотя и массивы, и векторы очень похожи на динамические массивы, которые могут увеличиваться в размерах, они имеют некоторые важные различия. Основное различие между массивами и векторами состоит в том, что векторы синхронизированы, а массивы несинхронизированы. Поэтому использование массивов в многопоточных средах не будет подходящим, в то время как векторы могут безопасно использоваться в многопоточных средах (так как они потокобезопасны). Но синхронизация в векторах может привести к снижению производительности. Поэтому было бы не очень хорошо использовать векторы в однопоточной среде. Внутренне, и массивы, и векторы используют массивы для хранения объектов. Когда текущего пространства недостаточно, векторы удваивают размер его внутреннего массива, в то время как массивы увеличивают размер его внутреннего массива на 50%. Но при использовании как массивов, так и векторов, давая подходящую начальную емкость, можно избежать ненужного изменения размера внутреннего массива. В ситуации, когда скорость роста данных известна, использование векторов было бы более подходящим, поскольку можно определить возрастающее значение векторов..