刪除數組中的某些元素,須要注意刪除後,整個數據的大小會變化。若是以元素下標刪除就會出錯。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