从ArrayList中删除对象

时间:2015-05-20 20:09:26

标签: java methods arraylist instance

我编写了自己的名为String name的类,其变量为int agedouble heighttoString(),以及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}}

3 个答案:

答案 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
    }
}