我有一个 ArrayList
,其中包含 10 个元素和一个变量 int = 12
。现在我想计算 array
中有多少个元素,如果小于 12
则从 0 开始再次计数,停止到索引 2 并将其删除,直到数组中有一个元素。我尝试了以下方法:
int j = 12;
int l = 0;
// Here I check if j is less than array.size
while (j < array.size()) {
for (int i = 0; i < array.size(); i++) {
if (j == i + 1) {
array.remove(i);
}
}
}
// Here is for j greater than array.size
while (array.size() != 1) {
for (int i = 0; i < array.size(); i++) {
l = j - array.size();
if (l < array.size()) {
array.remove(l);
}
}
}
System.out.println(array);
更新:
MyArray = {1,2,3,4,5,6,7,8,9,10};
int=12;
MyArray
仅包含 10
元素,但我想删除编号为 12
的索引,只要索引 12
不存在我就应该从零开始重新计数,而数字 12
位于索引 2
处,这就是为什么我应该删除编号为 2
的索引。第二次迭代 MyArray
将仅包含 9
元素,再次 12-9=3
,我应该删除编号为 3
的索引,直到 MyArray
中只有一个元素
最佳答案
您可以简单地使用:
,而不是循环遍历数组两次以删除最后 n 个元素直到列表的长度等于 jwhile (j < array.size()) {
array.remove(j - 1);
}
如果你总是想删除索引 2,你可以这样做:
while (array.size() >= 3) { // otherwise you will get a ArrayIndexOutOfBoundsException
array.remove(2);
}
但是,ArrayList 中将剩下两个元素,而不是 1 个(位于索引 0 和 1 处)。此时您无法删除“索引 2”,因为它不再是有效索引。
因此,您可以随后删除索引 0/1 或我认为您想要实现的目标:
while (array.size() >= 2) { // otherwise you will get a ArrayIndexOutOfBoundsException
array.remove(1);
}
那么索引 0 处的列表中将仅保留一个元素。
编辑:为了更新您的问题,它是
int originalSize = array.size();
while (array.size() >= originalSize - j) { // otherwise you will get a ArrayIndexOutOfBoundsException
array.remove(originalSize - j);
}
但是,您的列表中始终会留下 size - j
项。例如,除非列表中只有一个元素,否则您无法删除索引 3。
关于java - 从 ArrayList 中删除一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34855198/