从Java Arraylist中删除

从Java Arraylist中删除,java,Java,我做这个已经有一段时间了,不知道如何从Arraylist中删除 这是我的删除方法: static List<AddressInfo> contacts = new ArrayList<>(); private static void deleteContact() { //get name of contact to delete System.out.println("Which contact would you like to de

我做这个已经有一段时间了,不知道如何从Arraylist中删除

这是我的删除方法:

static List<AddressInfo> contacts = new ArrayList<>();

private static void deleteContact() {
        //get name of contact to delete
        System.out.println("Which contact would you like to delete?");
        System.out.println("Enter the contacts first name:");
        String nameToFind = scanner.nextLine();

        //loop through array list to find name that matches entry
        int matches = 0;
        for(AddressInfo person : contacts) {       
            if(person.getName().equals(nameToFind)) {

                contacts.remove(person);

                  matches++;
            }
        }
        if(matches<=0) {
            System.out.println("There are no contacts found with this name.\n");
        }  
        showMainMenu();
    }
姓名、姓氏、电话号码和电子邮件有getter和setter方法

问题:我的删除方法不起作用。我以为调用
.remove
会删除我搜索的联系人?我发现了其他问题,并尝试了所有建议,但我无法让删除工作。我有添加、编辑、查找和显示方法,这些方法非常有效。感谢您的帮助

编辑

这是显示的错误异常(使用NetBeans)


问题是在遍历ArrayList时无法修改它。

是否覆盖了
equals()
hashCode()
方法?@GBlodgett不需要,因为它是正在比较的字符串对象。代码应该会导致ConcurrentModificationException,尽管remove在使用增强的for循环进行迭代时会修改基础集合,但这当然是不允许的。@GBlodgett No,在这种情况下,不需要重写equals或hashCode,因为正在使用应该从集合中移除的确切对象调用remove。它需要做一些事情,比如contacts.remove(newaddressinfo(nameToFind));假设这样的构造函数。必须使用迭代器来更改集合迭代器迭代器=contacts.Iterator();while(iterator.hasNext()){AddressInfo person=iterator.next();if(person.getName().equals(nameToFind()){iterator.remove();}}这个问题是一个dup。有关解决方案,请参阅。如果为true,则不会激发解决方案。线程“main”中出现异常java.util.ConcurrentModificationException根本原因此异常就是我提到的异常。因为用户在遍历列表时正在从列表中删除该项。是的,但您的答案非常肤浅,更像是一篇评论啊..明白了..我是新加入社区的人,我没有想到这一点。我看到了问题,所以发布了答案。下一步会注意的输入法
AddressInfo(String name, String surname, String phoneNumber, String email) {
        this.name = name;
        this.surname = surname;
        this.phoneNumber = phoneNumber;
        this.email = email;
        id++;
    }

    String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
    at java.util.ArrayList$Itr.next(ArrayList.java:859)
    at addressbook.AddressBook.deleteContact(AddressBook.java:106)
    at addressbook.AddressBook.showMainMenu(AddressBook.java:203)
    at addressbook.AddressBook.addContact(AddressBook.java:95)
    at addressbook.AddressBook.showMainMenu(AddressBook.java:200)
    at addressbook.AddressBook.main(AddressBook.java:17)
C:\Users\Andre\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 10 seconds)