Разница между ArrayList и Vector
Сходство:
1. ArrayList и Vector как наследуют один и тот же родительский класс, так и реализуйте один и тот же интерфейс.
2. Нижний слой реализован массивами
3. Начальная длина по умолчанию составляет 10.
Различия:
1. Синхронизация:
Большинство публичных методов в векторе добавляют синхронизированное ключевое слово для обеспечения синхронизации методов, то есть векторного потока и поток ArrayList, небезопасны.
2. Различное расширение
Различные внутренние свойства могут быть причиной различных методов масштабирования.
ArrayList имеет два свойства, AtlementData Atlement, которая хранит данные, и размер, который хранит количество записей.
Vector имеет три свойства: Matry ElementData, которые хранят данные, элемент, который хранит количество записей, и способность коэффициента расширения, которая расширяет размер массива.
Метод расширения ArrayList
//jdk1.8.0_91private void grow (int mincapacity) {// переполненный код int oldCapacity = elementData.length; int newCapacity = OldCapacity + (OldCapacity >> 1); if (newcapacity - mincapacity <0) newcapacity = mincapacity; if (newcapacity - max_array_size> 0) newcapacity = gugecapacity (mincapacity); // mincapacity обычно близка к размеру, так что это победа: elementData = arrays.copyof (elementdata, newcapacity); }Можно видеть, что когда условие расширения выполняется, расширенный размер массива в 1,5 раза превышает исходную длину массива, а больше, чем пройденные параметры.
Метод расширения вектора
//jdk1.8.0_91private void grow (int mincapacity) {// переполненный код int oldCapacity = elementData.length; int newCapacity = OldCapacity + ((емкость -инкремент> 0)? емкость INTREMPREMENT: OldCapacity); if (newcapacity - mincapacity <0) newcapacity = mincapacity; if (newcapacity - max_array_size> 0) newcapacity = gugecapacity (mincapacity); elementData = arrays.copyof (elementdata, newcapacity); }Можно видеть, что когда коэффициент расширения больше 0, длина нового массива представляет собой исходную длину массива + коэффициент расширения, в противном случае длина подзывничного массива в два раза превышает длину исходного массива. Сравните новую длину массива, сгенерированную выше с пропущенной длиной параметра, более крупная - окончательная новая длина.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!