Sobes.tech
Junior — Middle

Kādi soļi tiek veikti, lai pievienotu jaunu elementu ArrayList struktūrai?

sobes.tech AI

Atbilde no AI

Kad pievienotu jaunu elementu ArrayList, tiek izpildīti šādi soļi:

  1. Pārbauda, vai pašreizējais iekšējais masīvs (parasti Object[]) ir pietiekami liels, lai saglabātu jauno elementu.
  2. Ja vietas nepietiek, tiek izveidots jauns masīvs ar palielinātu izmēru (parasti par 50% vai 1,5 reizes lielāks), un visi elementi tiek kopēti tajā.
  3. Jaunais elements tiek novietots pirmajā brīvajā pozīcijā iekšējā masīvā.
  4. Palielinās saraksta izmēra skaitītājs (size).

Parasti elementa pievienošana notiek šādi:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // pārbaude un masīva paplašināšana
    elementData[size++] = e;            // elementa pievienošana un izmēra palielināšana
    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% palielinājums
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}