我的代码如下
for(User user: userList){
if(user.getName()==null){
userList.remove(user);
}
}
这里我正在检查name属性的null值,但它在检查条件时拖拽空指针异常
栈跟踪
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at in.net.usit.dbu.web.transformation.TransformationViewModel.initializeData(TransformationViewModel.java:106)
at in.net.usit.dbu.web.transformation.TransformationViewModel.init(TransformationViewModel.java:91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.zkoss.bind.impl.ParamCall.call(ParamCall.java:111)
at org.zkoss.bind.impl.AbstractAnnotatedMethodInvoker.invokeMethod(AbstractAnnotatedMethodInvoker.java:87)
at org.zkoss.bind.BindComposer.doAfterCompose(BindComposer.java:170)
at org.zkoss.zk.ui.impl.UiEngineImpl.doAfterCompose(UiEngineImpl.java:534)
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:836)
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:782)
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:691)
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:753)
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:713)
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:655)
at org.zkoss.zk.ui.impl.UiEngineImpl.createComponents(UiEngineImpl.java:1036)
at org.zkoss.zk.ui.impl.AbstractExecution.createComponents0(AbstractExecution.java:246)
at org.zkoss.zk.ui.impl.AbstractExecution.createComponents(AbstractExecution.java:238)
at org.zkoss.zul.Include.afterCompose(Include.java:450)
at org.zkoss.zul.Include.onAfterCompose(Include.java:434)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2725)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2655)
at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136)
at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1721)
at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1506)
at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1216)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:601)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:483)
at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:492)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
这是堆栈跟踪我不知道如何找到解决方案请帮助我
答案 0 :(得分:0)
在迭代userList的同时尝试从列表中删除项时,会出现ConcurrentModificationException。
尝试使用Iterator并调用remove():
Iterator<String> iter = userList.iterator();
while (iter.hasNext()) {
User user = iter.next();
if (user.getName()==null)
iter.remove();
}
请参阅link了解详情