zoukankan      html  css  js  c++  java
  • 删除List集合中的元素方法

    List集合是我们平时使用的最多的集合了,一般用来存放从数据库中查询的对象数据,但有时我们会从中筛选不需要的数据,第一次使用这种方式:

    使用增强for循环遍历,使用list的remove方法删除不符合的对象。

            Page<EsAttention> attentionInfos = esAttentionMapper.getAttentions(map);
            List<EsAttention> esAttentionList = attentionInfos.getResult();
            for (EsAttention esAttention : esAttentionList){
                if (esAttention.getFocusedType() == 1){//关注的是个人,去除掉参与者身份
                    esAttentionList.remove(esAttention);
                }
            }

    结果发现会报如下错误:

    上所示,这是list集合中fail-fast机制,但出现在集合遍历的时候,改变元素,就会报ConcurrentModificationException,所以利用增强for循环实现该功能是不可行的。

    所以,使用Iterator迭代器进行循环遍历删除

            Page<EsAttention> attentionInfos = esAttentionMapper.getAttentions(map);
            List<EsAttention> esAttentionList = attentionInfos.getResult();
            Iterator<EsAttention> esAttentionIterator = esAttentionList.iterator();
            while (esAttentionIterator.hasNext()){
                 EsAttention esAttention = esAttentionIterator.next();
                 if (esAttention.getFocusedType() == 1){//关注的是个人,去除掉参与者身份
                    esAttentionIterator.remove();
                        
                  }
            }
            

     经测试,使用Iteration是可以达到效果的,但是这里需要注意的一点是,这里是通过iterator的remove()方法来进行删除的,而不是通过List的remove()方法来删除,如果还是用List的remove(),依旧会出报上述的错误。

  • 相关阅读:
    MVC通过后台注解来添加对数据的验证。
    HTML赋值方法练习
    HTML辅助方法的练习一
    第一次接触MVC Models概念
    部分视图的理解
    使用布局文件(Layout)
    springboot基本配置及快速启动
    springboot代码测试注意事项
    logback日志的基本使用
    springboot快速创建项目框架
  • 原文地址:https://www.cnblogs.com/luxianyu-s/p/10287685.html
Copyright © 2011-2022 走看看