到目前为止,我一直在尝试编写一个方法,removeEvenLength,它将String的ArrayList作为参数,并从列表中删除所有偶数长度的字符串。但到目前为止,我一直得到一个IndexOutOfBoundsException,我不知道为什么。
任何帮助将不胜感激
public static ArrayList<String> removeEvenLength(ArrayList<String> list) {
int size = list.size();
ArrayList<String> newLst = new ArrayList<String>();
for (int x = 0; x < size; x++) {
if (list.get(x).length() % 2 == 0) {
list.remove(x);
}
}
return list;
}
答案 0 :(得分:1)
删除元素后,列表的大小减1,因此变量size
不再表示列表的真实大小
此外,在索引i
处删除字符串后,i+1, i+2.. list.size() - 1
中的元素将向左移动一个位置。因此,一直递增循环计数器x
是错误的,您将跳过一些元素。
这是一种正确的方法
for (int x = 0; x < list.size();) {
if (list.get(x).length() % 2 == 0) {
list.remove(x);
} else {
x++;
}
}
答案 1 :(得分:0)
public static List<String> removeEvenLength(List<String> list) {
List<String> newList = new ArrayList<String>();
for (String item: list) {
if (item.length % 2 != 0) {
newList.add(item);
}
}
return newList;
}