gpt4 book ai didi

java - 从 ArrayList 中删除一个元素

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:59 25 4
gpt4 key购买 nike

我有一个 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 个元素直到列表的长度等于 j
while (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com