The goal is to find a matching pendingstatuslist from the createdlist and remove it from the Pendingstatuslist .
for (Docsyncstatus pendingdss:pendingstatuslist) {for (Docsyncstatus createddss:createdlist) { if (pendingDs S.getdochash (). Equals (Createddss.getdochash ())) { //Add into the Res list to delete them from the DB. Successdocstatusres.add (PENDINGDSS); LOG.I (TAG, "Find the pending doc in the Docsync cloud server by syncdoc,pendingdss=" + Pendingdss); Pendingstatuslist.remove (PENDINGDSS);}}}
The above code will report an exception:java.util.ConcurrentModificationException
The reason was found here from http://blog.csdn.net/aa4790139/article/details/6438869 and changed to the following version:
for (Iterator it = Pendingstatuslist.iterator (); It.hasnext ();) { Docsyncstatus Pendingdss = (docsyncstatus) it.next (); for (Docsyncstatus createddss:createdlist) { if (Pendingdss.getdochash (). Equals (Createddss.getdochash ())) { //Add into the Res list to delete them from the DB. Successdocstatusres.add (PENDINGDSS); LOG.I (TAG, "Find the pending doc in the Docsync cloud server by syncdoc,pendingdss=" + Pendingdss); It.remove ();}}}
The second time remove, the above version of the report exception:java.lang.IllegalStateException
From http://stackoverflow.com/questions/13539716/ Java-error-when-removing-from-an-arraylist-more-than-once-illegalstateexcept found a solution here:
for (iterator<docsyncstatus> it = Pendingstatuslist.iterator (); It.hasnext ();) { Docsyncstatus Pendingdss = (docsyncstatus) it.next (); for (Docsyncstatus createddss:createdlist) { if (Pendingdss.getdochash (). Equals (Createddss.getdochash ())) { //Add into the Res list to delete them from the DB. Successdocstatusres.add (PENDINGDSS); LOG.I (TAG, "Find the pending doc in the Docsync cloud server by syncdoc,pendingdss=" + Pendingdss); It.remove ();}}}
Exception encountered while doing list remove on Android