• 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

    学习的时间不一定要特定安排
  • 相关阅读:
    优雅地处理重复请求(并发请求)
    TSCTF2022(先挖个坑,太忙了呜呜呜)
    dotnet core 热重载调试Web Api
    Amazon Max deviation among all substrings
    javascript挑战编程技能第九题:数据结构
    javascript挑战编程技能第八题:99乘法表
    git获取代码和推送代码实例
    vue 项目打包和 安装项目依赖命令
    vscode 如何新建分支
    码云创建公钥 使其可以本地输入命令访问
  • 原文地址:https://www.cnblogs.com/zhongzheng123/p/10019970.html
Copyright © 2020-2023  润新知