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方法中的所有内容。