我编写了自己的名为String name
的类,其变量为int age
,double height
和toString()
,以及ArrayList
。然后我创建了Person
ArrayList
个,并添加了几个实例。它打印得很好。现在我想编写一个方法,当我写一个名字时,检查import java.util.*;
public class PersonManager {
public static void main(String[] args) {
ArrayList<Person> people = new ArrayList<>();
Scanner keyboard = new Scanner(System.in);
people.add(new Person("Adam ", 29, 177.5));
people.add(new Person("Bernadette", 19, 155.2));
people.add(new Person("Carl", 45, 199));
for (Person p : people)
System.out.println(p);
System.out.println("Select person to remove");
String name = keyboard.nextLine();
// if there is a person with that name in the list, that
//person gets removed from the list
}
}
是否有该名称的实例,如果是,则删除该实例。我该怎么做?
这是我写的:
{{1}}
答案 0 :(得分:1)
如果您使用的是JAVA 8并且不介意从原始列表创建新列表,则可以使用JAVA 8流:
{{1}}
答案 1 :(得分:1)
正如@MasterMind所说:如果您可以访问JDK 8功能,则可以使用过滤(如他的示例所示),也可以使用新的Collection#removeIf(..)
方法。在你的情况下,这将是:
people.removeIf(person -> person.getName().equals(name));
有关完整的示例,请参阅here。
答案 2 :(得分:0)
您希望导航到具有指定名称的Person
,并将其从列表中删除
因此,您可以在浏览列表时使用迭代器:
Iterator personIter = people.iterator();
while(personIter.hasNext()){
Person p = (Person)personIter.next();
if(name != null && name.equals(p.getName())){
personIter.remove();
break; //will prevent unnecessary iterations after match has been found
}
}