//返回结果集
List<PollutionTraceability> dmList = mapper.getDmData(params);
if(dmList !=null && dmList.size()>0){
//选哦删除的结果list
List<PollutionTraceability> lst = new ArrayList<PollutionTraceability>();
for (PollutionTraceability pTraceability : dmList) {
List<PollutionTraceabilityFactor> yzList = mapper.getFactorData(pTraceability.getResultId());
if(yzList != null && yzList.size()>0){
pTraceability.setList(yzList);
}else {
lst.add(pTraceability);
}
}
dmList.removeAll(lst);
}
return dmList;
/**
* 使用增强的for循环
* 在循环过程中从List中删除非基本数据类型以后,
* 继续循环List时会报ConcurrentModificationException
*/
public void listRemove() {
List<Student> students = this.getStudents();
for (Student stu : students) {
if (stu.getId() == 2)
students.remove(stu);
}
}
/**
* 像这种使用增强的for循环对List进行遍历删除,但删除之后马上就跳出的也不会出现异常
*/
public void listRemoveBreak() {
List<Student> students = this.getStudents();
for (Student stu : students) {
if (stu.getId() == 2) {
students.remove(stu);
break;
}
}
}
/**
* 这种不使用增强的for循环的也可以正常删除和遍历,
* 这里所谓的正常是指它不会报异常,但是删除后得到的
* 数据不一定是正确的,这主要是因为删除元素后,被删除元素后
* 的元素索引发生了变化。假设被遍历list中共有10个元素,当
* 删除了第3个元素后,第4个元素就变成了第3个元素了,第5个就变成
* 了第4个了,但是程序下一步循环到的索引是第4个,
* 这时候取到的就是原本的第5个元素了。
*/
public void listRemove2() {
List<Student> students = this.getStudents();
for (int i=0; i<students.size(); i++) {
if (students.get(i).getId()%3 == 0) {
Student student = students.get(i);
students.remove(student);
}
}
}
/**不加上break会报Exception in thread "main" java.util.ConcurrentModificationException错误*/
public class 删除list其中一条数据 {
public static void main(String[] args) {
List<String> strList = new ArrayList<String>();
strList.add("string1");
strList.add("string2");
strList.add("string3");
strList.add("string4");
strList.add("string5");
strList.add("string6");
// 操作方式1:while(Iterator);报错
Iterator<String> it = strList.iterator();
while(it.hasNext()) {
String s = it.next();
if("string2".equals(s)) {
strList.remove(s);
break;
}
}
System.out.println(strList);
}
}