我正在尝试从每次出现的事件中完全删除每个满足某些条件(运行状况<0)的GameObject,因此可能包含在每个ArrayList中。
我有一个主要的ArrayList,其中包含可能被删除的每个GameObject,并且我尝试使用For-Each遍历该ArrayList,检查每个元素的条件,然后将其删除。
但是这会导致ConcurrentModificationException,我知道原因,但不知道如何解决。任何帮助将不胜感激!
答案 0 :(得分:2)
就像@JacobG。在他的评论中提到,也许做到这一点的“最佳”方法(其中“最佳”将取决于个人喜好)是通过.removeIf()
方法。这是一个示例(假设您的对象上有一个getHealth()
方法)
List<GameObject> gameObjects = new ArrayList<>();
// Some code here to populate the list
gameObjects.removeIf(x -> x.getHealth() < 0);
答案 1 :(得分:0)
如果您要在单独的ArrayList中删除所有项目,则可以使用apache-commons-collections中的<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<root xmlns="">
<XML>$1</XML>
</root>
</soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg evaluator="xml" expression="$ctx:xmlbody"></arg>
</args>
</payloadFactory>
<property name="messageType" value="application/x-www-form-urlencoded" scope="axis2" type="STRING"></property>
<property name="DISABLE_CHUNKING" value="true" scope="axis2" type="STRING"></property>
<call>
<http method="post" uri-template="test.xmlhub.com/testpanel.php/action/findhotel"/>
</call>
方法将其从其他列表中删除:
CollectionUtils.subtract()
查看此link