JAVA中List删除元素部分陷阱问题

List中删除元素陷阱:

1.不能再用迭代器遍历的时候,直接使用list中的remove,这样破坏了结构。

2.如果遍历不使用迭代器(直接用size()控制循环),删除主要i的变化。

import java.lang.reflect.Array;
import java.util.*;
import java.util.Scanner;
import java.util.concurrent.CopyOnWriteArrayList;
public class tt {


public static void main(String args[]){ 
        List<String> strList = new LinkedList<String>();  
        strList.add("string1");  
        strList.add("string2");  
        strList.add("string3");  
        strList.add("string4");  
        strList.add("string5");  
        strList.add("string6");  
        int num=0;
          
//        // 操作方式1:while(Iterator);报错  
//        Iterator<String> it = strList.iterator();  
//        while(it.hasNext()) {  
//            String s = it.next();  
//            if("string2".equals(s)) {  
//                strList.remove(s);  
//            }  
//        }  
//          
        // 解决方案1:使用Iterator的remove方法删除元素  
        // 操作方式1:while(Iterator):不报错  
      Iterator<String> it = strList.iterator();  
      while(it.hasNext()) {  
             it.next();  
          if(num%2==0) {  
              it.remove();  
          } 
          num++;
      }  
//    for(int i=0; i<strList.size(); i++) {  
//    if(num%2==0) {  
//        strList.remove(strList.get(i));  
//       // strList.remove(i);  
//        i-=1;// 元素位置发生变化,修改i  
//    } 
//    num++;
//}  
     for (String s:strList){
    	 System.out.println(s);
     }
}
}
结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值