Arraylist.remove删除第一次出现而不是索引,即使我输入了一个int .remove(int i)?让我有一个随机数字的arraylist"数字",这个例子让我们说{1,3,5,2,4,6}
ArrayList<Integer> numbers = new ArrayList<Integer>();
aList.add(1);
aList.add(3);
aList.add(5);
aList.add(2);
aList.add(4);
aList.add(6);
Run Code Online (Sandbox Code Playgroud)
我想根据他们的索引删除所有奇数.我创建了另一个包含索引的Arraylist:
int origSize = numbers.size();
for (int i = 0; i < origSize; i++) {
if (numbers.get(i) % 2 != 0) {
numbers.add(numbers.get(i));
remover.add(i);
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当我使用.remove函数根据索引删除元素时,它会删除第一个匹配项.我的语法是正确的,或者我正在做.remove(int i):
for (int i = (remover.size() - 1); i>=0; i--) {
numbers.remove(remover.get(i));
}
Run Code Online (Sandbox Code Playgroud)
在我的例子中,5发生在索引2.但是运行.remove(remover.get(i)),应该.remove(2)删除第一次出现的2 ...最终,我得到{3,5,4,6},因为它删除了2,1和0而不是那些索引.为什么会这样?
非常感谢你的帮助.
当你有一个List<Integer>,如果你想打电话remove(int index),你需要传递一个int.如果你想打电话remove(Object o),你需要传递一个Integer.Integer继承自Object.int才不是.
如果您发现自己正在拨打错误的电话,请使用或将您int转为Integer或反之.numbers.remove((int) ...)numbers.remove((Integer) ...)
| 归档时间: |
|
| 查看次数: |
1064 次 |
| 最近记录: |