在我的列表中,我有一个具有null属性的对象,我想删除此对象,但在检入条件时是否条件为ConcurrentModificationException

时间:2016-12-29 06:57:29

标签: java arraylist

我的代码如下

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)

这是堆栈跟踪我不知道如何找到解决方案请帮助我

1 个答案:

答案 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了解详情