有没有办法从每次出现中删除自定义对象?

时间:2019-04-25 13:36:49

标签: java

我正在尝试从每次出现的事件中完全删除每个满足某些条件(运行状况<0)的GameObject,因此可能包含在每个ArrayList中。

我有一个主要的ArrayList,其中包含可能被删除的每个GameObject,并且我尝试使用For-Each遍历该ArrayList,检查每个元素的条件,然后将其删除。

但是这会导致ConcurrentModificationException,我知道原因,但不知道如何解决。任何帮助将不胜感激!

2 个答案:

答案 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