【发布时间】:2020-04-30 21:04:02
【问题描述】:
我正在尝试创建一个从未知类型(通配符)列表中删除每个第 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 循环替换为以下内容:
list.removeIf(i -> i % 3 == 0);
但是,当我这样做时,我收到错误,即参数类型的 % 运算符未定义。 我还尝试使用 for 循环将列表中的每个元素单独添加到另一个可修改列表中,但无论我做什么,我都没有运气。如果您能帮助我,将不胜感激!
【问题讨论】:
标签: java list generics wildcard