如何使用指定为参数的帐号从arraylist中删除帐户

时间:2014-11-11 13:52:49

标签: java arraylist

我不确定如何纠正这个问题才能使其发挥作用,

/ **如果帐户存在,则应删除指定为参数的帐号的帐户。然后应通过方法结果对话框返回适当的布尔值。 * /

public boolean removeAccount(String accountNumber)
{

    int index = 0;

    for(Account account : accounts)
    {
         if((account.getAccountNumber() == accountNumber) && index < accounts.size()) 
               accounts.remove(account);
         else
               index++;
    }

}

尝试使用迭代器

public boolean removeAccount(String accountNumber)
{
    Iterator<Account> i = accounts.iterator();
    while (i.hasNext()) {
        Account s = i.next(); // must be called before you can call i.remove()
        if(s.getAccountNumber().equals(accountNumber))
            return i.remove();
    }
    return false;
}

我得到&#34;不兼容类型:void无法转换为布尔值&#34;

4 个答案:

答案 0 :(得分:1)

public boolean removeAccount(String accountNumber)
{
    Iterator<Account> i = accounts.iterator();
    while (i.hasNext()) {
        Account s = i.next(); // must be called before you can call i.remove()
        if(s.getAccountNumber().equals(accountNumber)){
            i.remove();
            return true; 
        }
    }
    return false;
}

答案 1 :(得分:0)

Iterator.remove()不返回任何内容 - 它被声明为void

只需使用true常量。

i.remove();
return true;

答案 2 :(得分:0)

迭代时不要从列表中删除。迭代时获取对它的引用,然后在迭代后将其从列表中删除。

public boolean removeAccount(String accountNumber)
{

int index = 0;
Account toRemove;
for(Account account : accounts)
{
     if (account.getNumber.equals(accountNumber)){
       toRemove=account;
     }
}
accounts.remove(toRemove)

}

显然缺少nullchecks等。

答案 3 :(得分:-2)

对于迭代器尝试,您没有调用正确的删除方法。正如JavaDoc中对迭代器的解释,remove()将返回void。你可能想要考虑这样的事情:

for(int i = 0; i < accounts.size(); i++)
{
Account a = accounts.get(i);
if(a.getAccountNumber().equals(accountNumber))
{
return accounts.remove(i);
}
}