显示从Arraylist中删除的元素

时间:2016-01-09 21:10:26

标签: java arraylist

我正在编写一个非常简单的世界模拟器。每一步,人们都会变老,一旦达到最大年龄,他们就会死亡。我已经设法让人们死亡并将其从ArrayList移除。但是,我想说明在每个时间步骤中哪些人死亡(因此哪些元素从ArrayList中移除),但我不知道该怎么做。这是我的代码:

for(Iterator<Person> personIterator = persons.iterator(); personIterator.hasNext();) {
    Person person = personIterator.next();
    if (person.getAge() >= Person.MAX_AGE){
        personIterator.remove();
    }
}

4 个答案:

答案 0 :(得分:1)

您可以将您删除的元素累积到另一个集合中,然后返回/打印/不管它。 E.g:

List<Person> deaths = new LinkedList<>();
for(Iterator<Person> personIterator = persons.iterator(); personIterator.hasNext();) {
    Person person = personIterator.next();
    if (person.getAge() >= Person.MAX_AGE) {
        deaths.add(person);
        personIterator.remove();
    }
}

答案 1 :(得分:0)

您有多种选择,可以在#die上简单地使用Person方法报告您喜欢的方法:

public class Person {

    public void die() {
        System.out.println("Old man Jenkins kicked the bucket");
    }

}

//Elsewheres
if (person.getAge() >= Person.MAX_AGE) {
    person.die();
    //remove
}

如果您稍后需要引用它们,则可以将它们添加到另一个集合中。

答案 2 :(得分:0)

创建一个新列表并添加到该

for (Iterator < Person > personIterator = persons.iterator(); personIterator.hasNext();) {
 Person person = personIterator.next();
 if (person.getAge() >= Person.MAX_AGE) {
  personIterator.remove();
  personDead.add(person); // ADDED THIS LINE OF CODE
 }
}

答案 3 :(得分:0)

当您在ArrayList类中使用remove方法时,它将返回您删除的内容。所以我认为你可以有东西存储死亡的人,即另一个ArrayList。所以这样的事情应该有效:

ArrayList<person> dead = new ArrayList<person>();
if (person.getAge() >= Person.MAX_AGE){
             dead.add(personIterator.remove());
            }

P.S。我对编码非常新,所以这可能不起作用......我昨天学会了如何使用数组和ArrayLists。 (这段代码假设有一个人类,这些东西在里面)