2016-01-18 191 views
1

我有一个ArrayList,它包含10个元素和一个变量int = 12。现在我想要计算array中有多少元素,如果小于12开始从0开始再次计数,并停止到索引2并将其删除,直到我的数组中有一个元素。我试过如下:从ArrayList中删除元素

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); 

UPDATE:

MyArray = {1,2,3,4,5,6,7,8,9,10}; 
int=12; 

只包含10元素,但我想删除编号为12指数,只要指数12不存在我应该从0开始再次计数,12的索引号为2,这就是为什么我应该删除索引号为2。第二次迭代将仅包含9元素,并再次12-9=3,我应该用数字3删除索引,直到我将在

+0

如果你总是在指数2删除元素,你仍然有剩下2个元素(索引0和1) –

+3

能否澄清您试图实现的目标?我真的不知道你在做什么! – ParkerHalo

+1

如果你只想要索引为1的元素,你能否告诉我们为什么这样做?这看起来很混乱。 – SomeJavaGuy

回答

0

一个问题的更新问题:

当你有长度为10的列表,你要删除的“12元”,你可以使用模运算符:

ArrayList<...> someList = ...; 
int toDelete = 12; 

int deleteInRange = toDelete % someList.size(); 
someList.remove(deleteInRange); 

模运算符将传递其余整数部分12/10(toDelete % someList.size()

您可以在循环中使用此代码片段以删除多个元素。

+0

非常感谢您的工作! –

1

只是一个元素,而是通过数组循环两次,以除去最后n个元素,直到列表的长度等于Ĵ,你可以简单地使用:

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处)。你不能删除那个点上的ndex 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,直到列表中只有一个元素。

+0

谢谢你的帮助和毅力我投了你的问题,但不是我想要的。再次感谢您 –

-1

如果你总是想删除索引2,你可以这样做:

l = j - array.size(); 

改变这一行如下:

int sum = 0; 
sum = l - array.size(); 
if (sum > 0) { 
    array.remove(sum); 
} else { 
    sum = array.size() - l; 
    array.remove(sum); 
}