java - 从 ArrayList 中删除一个元素

标签 java arraylist

我有一个 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/

相关文章:

java - java Arraylist是Composition的一种形式

java - 检查新 Realm 对象是否尚未保存

java - 多线程环境下数据库调用的应用程序设计

java - java 8 获取和编辑子列表位于主列表中

java - 通过java检查我的服务器是否启动

java - 调试时 JVM 热插拔最佳实践

JavaFX:使用 Service 类定期重新绘制 ImageView。图像保持不变

Java:使用.txt文件将每行的特定索引分配给数组列表

java - 带有文件 I/O 和数组列表的 JTable

c# - C#中的多维关联数组