• java 在循环中删除数组元素之二


      删除数组中的某些元素,需要注意删除后,整个数据的大小会变化。如果以元素下标删除就会出错。

    错误示范:

    
    
    private JSONArray removeOther(JSONArray productList) {
    if (CollectionUtils.isNotEmpty(productList)) {
    //数组删除必须防止删除后与边界问题
    for (int i = 0; i < productList.size(); i--) {
    String riskPageType = productList.getJSONObject(i).getString("riskPageType");

    boolean remove = true;

    for (String product : productS) {

    if (product.equals(riskPageType)) {
    remove = false;
    break;
    }
    }

    if (remove) {
    productList.remove(i);
    } else {
    //防止前端误解,删除departmentCode
    productList.getJSONObject(i).remove("departmentCode");
    }
    }
    }
    return productList;
    }
     

      那么,我重新new一个数组,将原来的数据复制到新数组中,总可以吧。但是似乎有点浪费内存,大规模数据或者请求的时候就不适合了。换个思路:既然数据index会变小。那么我重后遍历并删除,这样就可以了吧

     private JSONArray removeOther(JSONArray productList) {
                //数组删除必须防止删除后与边界问题
                for (int i = 0; i < productList.size(); i--) {
                    String riskPageType = productList.getJSONObject(i).getString("riskPageType");
    
                    boolean remove = true;
    
                    for (String product : productS) {
    
                        if (product.equals(riskPageType)) {
                            remove = false;
                            break;
                        }
                    }
                    if (remove) {
                        productList.remove(i);
                    }
                }
            return productList;
        }

      还有一种方式就是把List数组变成将数组转换为Iterator<> 并且应用Iterator的删除方法,Iterator.remove

    参考之前

    https://www.cnblogs.com/zhongzheng123/p/5820755.html

    学习的时间不一定要特定安排
  • 相关阅读:
    响应式一些知识
    自动显示git分支--安装oh-my-zsh(Ubuntu环境)
    一些感受吧
    vim 编辑器笔记
    gitlab 配置 ssh && ubuntu
    css3遇到的一些属性
    ajax 基础教程
    怎么查看浏览器内核
    简单理解锁
    测试项目注意项
  • 原文地址:https://www.cnblogs.com/zhongzheng123/p/10019970.html
Copyright © 2020-2023  润新知