0

我正在为一家名为“客户”的公司创建一系列客户帐户。我有一个方法调用getGasAccount,它将计算数组中的帐户数。

我将程序类中的变量声明为:

final int MAXACCOUNTS = 10;
int intNUmber, intSelectAccount;

我使用以下方法设置帐户:

if (GasAccount.getGasAccount() < MAXACCOUNTS) {
   intSelectAccount = GasAccount.getBankAccount()++;
   customers[intSelectAccount] = new GasAccount();
}

我希望能够通过调用构造函数时手动输入的帐号来搜索客户。我不想通过intSelectAcocunt/array 引用进行搜索。

如果我有一个名为 的方法displayAccountDetails,是否有另一种查找帐户的方法,而不是使用:

customers[intSelectAccount].displayAccountDetails();
4

2 回答 2

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;
        }
    }
}

或者

public void getAccountDetails(int accountNumber){
    for(GasAccount gasAccountObj : customers){
        if(gasAccountObj.getAccountNumber() == accountNumber){
            gasAccountObj.displayAccountDetails();
            break;
        }
    }
}
于 2013-03-25T18:12:20.970 回答
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”的条目,它将返回与该键关联的值。

如果您想进行更多阅读,这里是 Wikipedia 文章。

编辑:根据一些评论,我还有一些东西要添加。

如果您像这样将 HashMap 设为静态可能会更好

private static HashMap<String, String> accountHash = new HashMap<String, String>();

当您声明变量静态时,这使得您不必实例化对象来访问 HashMap。你可以做这样的事情。

AccountClass.accountHash.get(); 

或 AccountClass.accountHash.put();

如果你想在你的 HashMap 中添加东西,你需要使用 put 方法。这是一个例子。

accountHash.put("1234","My test account"). 

现在当你使用这个时,accountHash.get("1234");//你会得到我的测试账号

您将获得与“1234”键关联的值。

请记住,此示例只是为了让您了解如何使用它。您可以拥有 、 或其他任何您想要的地图。

于 2013-03-25T18:35:01.330 回答