zoukankan      html  css  js  c++  java
  • List 集合 使用 remove 踩得坑

    不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。
     
    正确例子:
    Iterator iterator = list.iterator();
    while(iterator.hasNext())
    {
    String item = iterator.next();
    if (删除元素的条件) {
    iterator.remove();
    }
    }

    错误写法例子:
    List<String> list = new ArrayList<String>();
    list.add("1");
    list.add("2");
    System.out.println("移除前:" + list);
    for (String item : list) {
    if ("1".equals(item)) {
    list.remove(item);
    }
    }
    System.out.println("移除后:" + list);

    运行结果: 移除前:[1, 2] 移除后:[2]



    将上图中的 "1" 修改为"2" ,结果会出乎你的意料。
    List<String> list = new ArrayList<String>();
    list.add("1");
    list.add("2");
    System.out.println("移除前:" + list);
    for (String item : list) {
    if ("2".equals(item)) {
    list.remove(item);
    }
    }
    System.out.println("移除后:" + list);
    如下图:

    结果是不是出乎大家的意料,所以如果集合中进行remove、add 操作,请使用正确的例子方式。

    
    
    
    
    
     
  • 相关阅读:
    MongoDB高级操作
    MongoDB基本操作
    Python字符串
    Git标签和别名管理
    Git分支管理
    Git远程仓库(github
    Git分布式版本管理工具基本使用方法
    CentOS7防火墙
    CentOS7新特性
    Linux系统初始流程
  • 原文地址:https://www.cnblogs.com/ming-blogs/p/11002448.html
Copyright © 2011-2022 走看看