Я пытаюсь создать метод, который удаляет каждый N-й элемент из списка неизвестного типа (подстановочный знак), однако, при каждом попытке сделать это, он не удаляет указанные элементы, но я не могу понять, почему. Я боролся с этим уже два дня, поэтому я публикую здесь последнее средство. Я заранее благодарю вас за любую помощь.
Код, который у меня есть в настоящее время, выглядит следующим образом:
public static void removeEveryNthElement(List<?> list, int n) {
//Set list equal to an ArrayList because List is immutable
list = new ArrayList<>(list);
//If n is negative or zero throw an exception
if(n <= 0) {
throw new IllegalArgumentException("Integer n needs to be a positive number.");
}
//If the list is null, throw an exception
if(list == null) {
throw new NullPointerException("The list must not be null.");
}
//Remove every nth element in the list
for(int i = 0; i < list.size(); i++) {
if(i % n == 0) {
list.remove(i);
}
}
Другой способ, которым я попытался, - заменить for для l oop следующим :
list.removeIf(i -> i % 3 == 0);
Однако, когда я делаю это таким образом, я получаю ошибку, что оператор% не определен для типа аргумента. Я также пытался использовать для l oop для отдельного добавления каждого элемента из списка в другой изменяемый список, но что бы я ни делал, мне не повезло. Если бы вы могли помочь мне с этим, я был бы очень признателен!