Java 显示从Arraylist中删除的元素

Java 显示从Arraylist中删除的元素,java,arraylist,Java,Arraylist,我正在写一个非常简单的世界模拟器。每一步,人们都会变老,一旦达到最大年龄,他们就会死亡。我已经设法让人们死去,并将他们从ArrayList中删除。但是,我想显示在每个时间步中有哪些人死亡(因此哪些元素从ArrayList中删除),但我不知道怎么做。这是我的代码: for(Iterator<Person> personIterator = persons.iterator(); personIterator.hasNext();) { Person person = perso

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

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

您有多种选择,其中一种选择可以是在
Person
类上使用一个
#die
方法,该类可以按您喜欢的方式报告:

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
}

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

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

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
 }
}
for(迭代器personIterator=persons.Iterator();personIterator.hasNext();){
Person=personIterator.next();
if(person.getAge()>=person.MAX_AGE){
personiter.remove();
添加(person);//添加了这行代码
}
}

您可以将删除的元素累积到另一个集合中,然后返回/打印/无论它是什么。例如:

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();
    }
}
List death=newlinkedlist();
for(迭代器personIterator=persons.Iterator();personIterator.hasNext();){
Person=personIterator.next();
if(person.getAge()>=person.MAX_AGE){
死亡人数。增加(人);
personiter.remove();
}
}

当您在ArrayList类中使用remove方法时,它将返回您删除的内容。所以我认为你可以有一些东西来储存死去的人,也就是另一个ArrayList。因此,类似这样的方法应该有效:

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

另外,我对编码非常陌生,所以这可能不起作用。。。昨天我学习了如何使用数组和ArrayList。(此代码假设有一个person类,该类中有这些东西)

为什么不单独保存一个
列表来跟踪死者?每次某人死亡时,将其添加到列表中。在您删除此人的代码中,将其添加到“死亡”列表中,然后将其删除。每次通过老化循环重置死亡列表。谢谢!这管用!现在我设法打印出每一步有多少人死亡。然而,我想打印出它是哪些人。我可以使用toString方法来实现这一点。但是,我只想打印出它们的ID,它只是变量之一,而不是toString方法中的所有内容。