查找list里面的的某些值(可以重复的),将其删除掉,
以下代码有没有问题,有的话是什么问题,如何解决?没有的话请直接输出结果。import java.util.ArrayList;
import java.util.List;public class TestList {
public static void main(String[] args) {
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<10;i++){
list.add(i);//组装list
}
for(int i=0;i<list.size();i++){
if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
}
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
}
}
以下代码有没有问题,有的话是什么问题,如何解决?没有的话请直接输出结果。import java.util.ArrayList;
import java.util.List;public class TestList {
public static void main(String[] args) {
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<10;i++){
list.add(i);//组装list
}
for(int i=0;i<list.size();i++){
if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
}
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
}
}
for(int i=0;i<list.size();i++){
if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
}
}删掉一个元素以后,list.size();随之发生了变化,但是i还是继续往上加,所以应该这样:for(int i=0;i<list.size();i++){
if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
i--;
}
}
if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
i--; //加上这个才行;
}
}
仅仅删除5没必要循环查找直接remove(new Integer(5))好了
public static void main(String[] args) {
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<10;i++){
list.add(5);//组装list
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
System.out.println();
for(int i=0;i<list.size();i++){
if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
}
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
}
纯粹是乱说,又不是这样子做的,为什么要i--; int count = list.size();
for (int i = 0; i <count; i++) {
if (5 == (Integer) list.get(i)) {//
list.remove(i);
}
}
for (int i = 0; i <count; i++) {
if (5 == (Integer) list.get(i)) {//
list.remove(i);
}
}
在其它地方加数字5结果也没错。同意5楼,SIZE是动态的!
for(int i=0;i<list.size();i++){
System.out.println("i=="+i);
System.out.println("list=="+list.get(i));
if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
}
}结果是
i==0
list==0
i==1
list==1
i==2
list==2
i==3
list==3
i==4
list==4
i==5
list==5
i==6
list==7
i==7
list==8
i==8
list==9
list.removeAll(new ArrayList<Integer>(){{add(5);add(4)}});
强烈同意
原因就是因为list动态的 如果全是5的话当你删了第一个5的时候,list会自动把原来第二个5放在第一个位置上 所以如果没加上i--的话,其实只是删除了原来list里面第1,3,5,7,9位置上的数字了
新的测试代码: List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<10;i++){
list.add(i);//组装list
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
System.out.println();
for(int i=0;i<list.size();i++){
/* if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
}*/
list.remove(i);
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
}结果:
0123456789
13579
if(5==(Integer)list.get(i)){//循环查找如果是5的就删除
list.remove(i);
}
}
还有只有一个值的时候能 也是没有问题的。
而这个count是不变的