Sobes.tech
Middle
152

Ierosiniet efektīvu algoritmu, lai no vidus saraksta, kas realizēts ar ArrayList, izdzēstu vairākus blakus esošus elementus.

Atbilde no AI

sobes.tech AI

Самый эффективный способ удаления нескольких соседних элементов из середины ArrayList - это использовать метод removeRange.

import java.util.ArrayList;
import java.util.List;

public class ArrayListRemoveExample {

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i);
        }
        System.out.println("Original list: " + list);

        int startIndex = 3; // Начальный индекс (включительно)
        int endIndex = 6;   // Конечный индекс (исключительно)

        ((ArrayList<Integer>) list).removeRange(startIndex, endIndex); // Удаление элементов с startIndex по endIndex-1 inclusive

        System.out.println("List after removing elements: " + list);
    }
}

Метод removeRange является защищенным (protected) методом класса ArrayList, поэтому для его использования необходимо явно привести коллекцию к типу ArrayList. Этот метод реализован наиболее эффективно с точки зрения смещения элементов.

Сложность операции удаления k элементов из середины ArrayList составляет O(n-i), где n - размер списка, а i - начальный индекс удаления. removeRange сдвигает элементы за один проход. Повторное использование remove(int index) для каждого удаляемого элемента приводило бы к сложности O(k * (n-i)), что менее эффективно.