Самая важная вещь, которую нужно понять, когда вы удаляете элемент с помощью индекса, это то, что List
сжимается каждый раз, т.е. вам просто нужно снова вызвать remove, чтобы удалить следующий элемент, потому что следующий элемент занял место последнего удаленного element.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("c", "b", "a", "d", "e", "j", "k"));
System.out.println("Original list: ");
System.out.println(list);
// Let's say we are searching `a`
int index = list.indexOf("a");
if (index != -1 && ((index + 3) < list.size())) {
// Remove element at index, index + 1, index + 2 and index +3
list.remove(index);
list.remove(index);
list.remove(index);
list.remove(index);
}
System.out.println("Updated list: ");
System.out.println(list);
}
}
Вывод:
Original list:
[c, b, a, d, e, j, k]
Updated list:
[c, b, k]
Вы можете упростить приведенный выше код, поместив повторный код внутри al oop следующим образом:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("c", "b", "a", "d", "e", "j", "k"));
System.out.println("Original list: ");
System.out.println(list);
// Let's say we are searching `a`
int index = list.indexOf("a");
if (index != -1 && ((index + 3) < list.size())) {
// Remove element at index, index + 1, index + 2 and index +3
for (int i = 1; i <= 4; i++) {
list.remove(index);
}
}
System.out.println("Updated list: ");
System.out.println(list);
}
}
Вывод:
Original list:
[c, b, a, d, e, j, k]
Updated list:
[c, b, k]
Примечания:
- Когда элемент не найден List :: indexOf возвращает
-1
. - Также важно проверить
(index + 3) < list.size()
, чтобы избежать IndexOutOfBoundsException
. Например, скажем, a
был найден по индексу 2
, и после этого был только один элемент, т.е. в списке было всего 4
элементов. В этом случае попытка получить доступ ( get или удалить ) к элементу из индекса 4
или 5
выдаст IndexOutOfBoundsException
.