从arrayList中移除一个人

问题描述

我有一个名为person的类,其中包含一个人的信息,例如其姓名,年龄和地址。我还有另一个类,其中有一个ArrayList,其中添加了所有客户。如何找到该人的姓名并将其删除

这是我的代码,但无法完成工作。

public void poistaAsiakas(String poistettava) {
    for (Henkilo p : this.henkilonTiedot) {
        if (p.getNimi().equals(poistettava)) {
            this.henkilonTiedot.remove(p); // or simply return it from there
            break;
        }
    }
}

解决方法

在每次循环中都用List循环时,您无法将其删除。您可以改为使用Collection#removeIf

this.henkilonTiedot.removeIf(p -> p.getNimi().equals(poistettava));

通常,当需要在迭代时删除元素时,使用Iterator是一种方法。

for(final Iterator<Henkilo> it = this.henkilonTiedot.iterator(); it.hasNext();){
    final Henkilo p = it.next();
    if(p.getNimi().equals(poistettava)){
        it.remove();
        break;
    }
}

如果只有一个要删除的元素,则基于索引的简单for循环也将起作用。请注意,这不是最佳做法。

for(int i = 0; i < this.henkilonTiedot.size(); i++){
    if (this.henkilonTiedot.get(i).getNimi().equals(poistettava)){
        this.henkilonTiedot.remove(i);
        break;
    }
}