java新手正在努力从arraylist中删除对象
我需要删除一个基于其自身类实例中变量的元素
我有一个名为Account的类和一个名为AccountList的ArrayList。据我所知,有两种方法可以从数组中删除元素:通过索引和使用Object 0方法
不幸的是,这两个都不适合我;如果一个对象的变量值“accountNumber”(来自Account类)等于用户输入的accountNumber的参数值,我需要删除该对象。我的导师想要一个带有字符串参数Account Number的布尔方法
我的方法是使用Account类的getAccNumber()
getter方法,如果它等于参数,则将其删除
public boolean removeAccount(String AccountNumber)
{
if (AccountNumber.equals(Account.getAccNumber()))
{
accounts.remove(AccountNumber);
return true;
}
else
{
return false;
}
}
然而,这是行不通的
顺便说一句,我不得不将getAccNumber()
方法设为静态,以允许ArrayList类进行访问。这把账目的实例搞砸了;如果我创建它的新实例,新的AccountNumber值将覆盖上一个实例
有什么想法吗
编辑。。。他对它的确切说明是“removeAccount(String)应该删除帐号指定为参数的帐号,如果帐号存在的话。然后应该通过BlueJ‘方法结果’对话框返回相应的布尔值。”
# 1 楼答案
以下是如何在Java 8中无需任何迭代即可完成此任务:
这个表达式返回
true
如果删除了某个内容,则返回false
如果你不能使用Java 8:我不确定你是什么,不允许使用什么。如果可以使用循环,但不能使用
Iterator
或增强的for
循环(for Account acc : accounts
),它通过暗示使用迭代器,那么可以使用索引编写循环:这将找到具有匹配索引的帐户索引,然后使用
remove(index)
方法将其删除。[请注意,如果需要删除多个元素,则必须修改此方法,因为remove(i)
方法会移动元素i
后面元素的所有索引,这意味着如果不小心,i++
可以跳过一个。但我假设最多有一个帐户具有给定的帐号。]