Junior — Middle
Ինչ քայլեր են կատարվում նոր տարր ավելացնելու համար ArrayList կառուցվածքին:
sobes.tech AI
Պատասխան AI-ից
Երբ ավելացնում եք նոր տարր ArrayList-ին, կատարվում են հետևյալ քայլերը՝
- Ստուգվում է, արդյոք ընթացիկ ներքին զանգվածը (հաճախ Object[]) բավականին մեծ է նոր տարրին տեղավորելու համար:
- Եթե տեղը բավարար չէ, ստեղծվում է նոր զանգված մեծացված չափով (հաճախ 50% կամ 1.5 անգամ ավելի մեծ), և բոլոր տարրերը պատճենվում են դրա մեջ:
- Նոր տարրը տեղադրվում է ներքին զանգվածի առաջին ազատ դիրքում:
- Զանգվածի չափի հաշվիչը (size) ավելացվում է:
Սովորաբար տարր ավելացնելը հետևյալ կերպ է կատարվում:
public boolean add(E e) {
ensureCapacityInternal(size + 1); // ստուգում և զանգվածի ընդլայնում
elementData[size++] = e; // տարր ավելացնել և չափը մեծացնել
return true;
}
private void ensureCapacityInternal(int minCapacity) {
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
private void grow(int minCapacity) {
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1); // 50% մեծացում
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
elementData = Arrays.copyOf(elementData, newCapacity);
}