Middle
150
Schlagen Sie einen effizienten Algorithmus vor, um mehrere benachbarte Elemente aus der Mitte einer mit ArrayList implementierten Liste zu entfernen.
Antwort von AI
sobes.tech KI
Самый эффективный способ удаления нескольких соседних элементов из середины 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)), что менее эффективно.