public static ArrayList<String> remove(ArrayList<String> list, int a) {
for(int i = 0; i < list.size(); i++){
list.remove(i);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码不会删除数组中的每个元素?它似乎跳过了一些.当我在最后打印arraylist时,它应该是空白的,但它打印出来时仍然有一些元素.
编辑(更多代码):
public static void main(String [] args){
Scanner scan = new Scanner(System.in);
System.out.println("Enter some a list of words:");
String line = scan.nextLine();
String[] words = line.split(" +");
ArrayList<String> list = new ArrayList<String>();
for(int i=0; i<words.length; i++){
list.add(words[i]);
}
System.out.println("Remove words less than how many characters?");
int a = scan.nextInt();
remove(list,a);
System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)
删除第ith个元素时,第i+1th个元素成为第ith个元素.并且由于您i在每次迭代中递增,因此跳过列表中的一半元素.
此循环将删除所有元素:
for(int i = 0; i < list.size();) {
list.remove(i);
}
Run Code Online (Sandbox Code Playgroud)
public E remove(int index)
删除此列表中指定位置的元素.将任何后续元素向左移位(从索引中减去一个).
现在,如果您希望迭代列表中的所有元素,同时只删除其中的一些元素,则可以执行以下操作:
for(int i = 0; i < list.size(); i++) {
if (someCondition) {
list.remove(i);
i--;
}
}
Run Code Online (Sandbox Code Playgroud)
这将确保您不会跳过任何元素.
| 归档时间: |
|
| 查看次数: |
1024 次 |
| 最近记录: |