gpt4 book ai didi

java - 删除 Arraylist 中的特定项目

转载 作者:行者123 更新时间:2023-12-01 21:55:04 25 4
gpt4 key购买 nike

我正在努力从数组列表中删除项目。更具体地说,我有两个数组列表,分别是 people 和 vulcanos。两者都位于网格中。每个时间步,人们可以移动或不移动(这对于相邻单元来说是随机发生的),而火山在整个模拟过程中是静态的。火山可以喷发,也可以不喷发。这是由用户定义的概率确定的。当在某个时间步,一个人与正在喷发的火山位于同一单元格时,这个人就会死亡。但我不知道如何从我的数组中删除那个特定的人。到目前为止,我得到了以下内容(每个时间步骤都重复)。

for (int j = 0; j < persons.size(); j++) {
for (int k = 0; k < volcanos.size(); k++) {
if ((persons.get(j).getXCoordPerson()) == (volcanos.get(k).getXCoordVolcano())
&& (persons.get(j).getYCoordPerson()) == (volcanos.get(k).getYCoordVolcano())
&& (volcanos.get(k).getEruptionStatus() == true)) {
// all persons being on the same cell as an erupting volcano die
}
}
}

最佳答案

您也可以使用迭代器来完成此操作:

for(Iterator<Person> personIterator = persons.iterator(); i.hasNext(); ) {
Person person = personIterator.next();
for(Volcano volcano : volcanos) {
if(volcano.getEruptionStatus() &&
volcano.getYCoordVolcano() == person.getYCoordPerson() &&
volcano.getXCoordVolcano() == person.getXCoordPerson()) {
personIterator.remove();
}
}
}

在本例中,您将使用迭代器进行删除,将 ArrayList 保留为您想要的状态,作为循环的副作用。

需要注意的一件事是,在此循环期间不要修改人员列表,否则最终会出现 ConcurrentModificationException。我假设您有一个单线程正在运行,并且这是用于功课或类似的事情。如果您在现实世界中执行此操作,则必须考虑两个列表(人和火山)可能随时发生变化的事实。

关于java - 删除 Arraylist 中的特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34499018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com