java 判断集合是否存在某个元素,如果存在添加一个新元素

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 21:05   5207   0
public static void main(String[] args){
  List list = new ArrayList();
  list.add("a");         //Object obj = new String();
  list.add("b");
  list.add("world");
  list.add("c");
  list.add("d");
  list.add("e");
  
  
  //正常执行,输出:[a, b, world, c, d, e, javaee]
  for(int i=0;i<list.size();i++){
   if("world".equals(list.get(i))){
    list.add("javaee");
   }
  }
   
  
  //执行报错:java.util.ConcurrentModificationException
  for(Object obj:list){
   if("world".equals(obj)){
    list.add("javaee");
   }
  }
  
  
  //执行报错:java.util.ConcurrentModificationException
  Iterator it1 = list.iterator();
  while(it1.hasNext()){
   Object obj = it1.next();
   if("world".equals(obj)){
    list.add("javaee");
   }
  }
  
  
  //正常执行,输出:[a, b, world, javaee, c, d, e]
  ListIterator it2 = list.listIterator();
  while(it2.hasNext()){
   Object obj = it2.next();
   if("world".equals(obj)){
    
    //注:如果是List.add方法报错java.util.ConcurrentModificationException
    //遍历的同时在增加元素,并发修改ConcurrentModificationException
    //list.add("javaee");
    
    
    //ListIterator.add
    //该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有)
    it2.add("javaee");
   }
  }
  
  System.out.println(list);
   }

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP