我需要根据元素自己的类实例中的变量来删除元素。
我有一个名为 Account 的类和一个名为 AccountList 的 ArrayList。据我所知,从数组中删除元素有两种方法:通过索引和使用 Object 0 方法。
不幸的是,这些都不适合我;如果对象的变量值“accountNumber”(来自 Account 类)等于用户输入的 AccountNumber 参数值,我需要删除该对象。我的导师想要一个带有名为“帐号”的字符串参数的 boolean 方法。
我的方法是使用 Account 类的 getAccNumber()
getter 方法,如果它等于参数,则将其删除。
public boolean removeAccount(String AccountNumber)
{
if (AccountNumber.equals(Account.getAccNumber()))
{
accounts.remove(AccountNumber);
return true;
}
else
{
return false;
}
}
但是,这不起作用。
顺便说一句,我必须将 getAccNumber()
方法设置为静态,以允许 ArrayList 类进行访问。这弄乱了 Account 的实例;如果我创建它的新实例,新的 AccountNumber 值将覆盖之前的值。
有什么想法吗?
编辑...他的确切规范“removeAccount(String) 如果帐户存在,则应删除指定为参数的帐号的帐户。然后应通过 BlueJ“方法结果”返回适当的 boolean 值对话框。”
最佳答案
您不需要将 accountNumber 设为静态,只需循环遍历帐户列表并读取每个帐号并进行比较即可。
这应该对你有用:
public boolean removeAccount(String accountNumber)
{
return accounts.remove(getAccountByName(accountNumber));
}
public Account getAccountByName(String accountNumber){
for(Account acc: accounts){
if(accountNumber.equals(acc.getAccNumber())){
return acc;
}
}
}
按照你的方式,你会达到这样的状态:ConcurrentModificationException阅读更多相关内容。
关于java - 新手努力从数组列表中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26875111/