我正在为一家名为“客户”的公司创建一系列客户帐户。我有一个名为getGasAccount
的方法,它将计算数组中的帐户数。
我在程序类中将变量声明为:
final int MAXACCOUNTS = 10;
int intNUmber, intSelectAccount;
我使用以下方式设置帐户:
if (GasAccount.getGasAccount() < MAXACCOUNTS) {
intSelectAccount = GasAccount.getBankAccount()++;
customers[intSelectAccount] = new GasAccount();
}
我希望能够通过他们的帐号搜索客户,该帐号是在调用构造函数时手动输入的。我不想通过intSelectAcocunt
/数组引用进行搜索。
如果我有一个名为displayAccountDetails
的方法,是否有其他方法可以找到帐户而不是使用:
customers[intSelectAccount].displayAccountDetails();
答案 0 :(得分:1)
在equals
中实施GasAccount
方法
public boolean equals(Object objToCompare){
if (objToCompare != null){
return objToCompare instanceof GasAccount && ((GasAccount)objToCompare).getAccountNumber() == getAccountNumber();
}else{
return false;
}
}
现在找到数组中GasAccount
对象的位置并显示帐户详细信息:
java.util.List<GasAccount> gasAccountsList = (java.util.List<GasAccount>)java.util.Arrays.asList(customers);
int objectIndex = gasAccountsList.indexOf([Gas Account Object]);
if (objectIndex != -1){
gasAccountsList.get(objectIndex).displayAccountDetails();
}
jahroy 建议按帐号搜索的另一种简单方法是:
public void getAccountDetails(int accountNumber){
java.util.List<GasAccount> gasAccountsList = (java.util.List<GasAccount>)java.util.Arrays.asList(customers);
for(GasAccount gasAccountObj : gasAccountsList){
if(gasAccountObj.getAccountNumber() == accountNumber){
gasAccountObj.displayAccountDetails();
break;
}
}
}
OR
public void getAccountDetails(int accountNumber){
for(GasAccount gasAccountObj : customers){
if(gasAccountObj.getAccountNumber() == accountNumber){
gasAccountObj.displayAccountDetails();
break;
}
}
}
答案 1 :(得分:0)
您想要的数据结构是HashMap。你可以这样做。
public class AccountClass{
//You can fill in the details. I sounds like you know about constructors
//getters, setters, etc.
private HashMap<String, String> accountHash = new HashMap<String, String>();
public HashMap<String, String> getHashMap()
{
return this.accountHash;
}
}
当您想按帐号查找帐户时,您可以执行以下操作。
AccountClass acct = new AccountClass();
acct.getHashMap().get("1234");
假设您实际在地图中放置了帐号为“1234”的条目,则会返回与该密钥相关联的值。
Here是维基百科的文章,如果你想做更多的阅读。
编辑:根据一些评论,我还要添加一些内容。
如果你像这样使用HashMap静态
可能会更好private static HashMap<String, String> accountHash = new HashMap<String, String>();
当您声明变量static时,这使得您不必实例化对象来访问HashMap。你可以做这样的事情。
AccountClass.accountHash.get();
或 AccountClass.accountHash.put();
如果要向HashMap添加内容,则需要使用put方法。这是一个例子。
accountHash.put("1234","My test account").
现在当你使用它时, accountHash.get(“1234”); //您将获得我的测试帐户
您将获得与“1234”键相关联的值。
请记住,此示例只是为了让您了解如何使用它。您可以拥有,或其他任何您想要的地图。