在循环中判断元素,满足某些条件时,需要删除元素,如果在一个循环体中处理,会报:java.util.ConcurrentModificationException异常,稍微改下写法即可解决,参看如下黑体和红字部分操作:
public static void main(String[] args) {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("time", 10);
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("time", 20);
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("time", 30);
list.add(map3);
list.add(map2);
list.add(map1);
System.out.println(list);
int idx = 0;
while(true){
if(list.size()<=idx){
break;
}
if(list.size()>1){ //删除数据项的条件,换成你的判断条件。
list.remove(idx);
continue;
}
idx++;
}
System.out.println(list);
}
更简单的写法是:
for (int i = 0; i < list.size(); i++) {
if(list.size()>2){ //删除的条件
list.remove(i);
i--;
}
}