java数组遍历删除_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会变小。那么我重后遍历并删除,这样就可以了吧

privateJSONArray 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);

}

}returnproductList;

}

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

参考之前

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值