java 在循環中刪除數組元素之二

  刪除數組中的某些元素,須要注意刪除後,整個數據的大小會變化。若是以元素下標刪除就會出錯。html

錯誤示範:前端

 
 
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.removespa

參考以前code

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

相關文章
相關標籤/搜索