用于循环解释

时间:2014-02-17 16:43:20

标签: java

我有两个数组列表;

        ArrayList<BankAccount> bankAccounts = new ArrayList<>();

        bankAccounts.add(new CheckingAccount    ("chk001",  500.00)) ;
        bankAccounts.add(new SavingsAccount     ("sav001", 5000.00)) ;
        bankAccounts.add(new LineOfCreditAccount("loc001",36000.00)) ;
        bankAccounts.add(new CheckingAccount    ("chk002",  299.00)) ;
        bankAccounts.add(new SavingsAccount     ("sav002", 9049.00)) ;
        bankAccounts.add(new LineOfCreditAccount("loc002",10000.00)) ;


        ArrayList<Transaction> transactionList = new ArrayList<>() ;


        transactionList.add(new DepositTransaction   ("chk001",  500.00)) ;
        transactionList.add(new DepositTransaction   ("sav001", 5000.00)) ;
        transactionList.add(new DepositTransaction   ("loc001",  350.00)) ; 

和transactionList有一个名为applyTransaction()

的方法

现在,我正在访问bankAccounts and transactionList中的每个元素,如下所示

BankAccount test = bankAccounts.get(0)
           ,test1 = bankAccounts.get(1);
Transaction t0 = transactionList.get(0)
           ,t1 = transactionList.get(1)
           ,t3 = transactionList.get(3);

将每笔交易应用到相应的银行账户,如下所示

t0.applyTransaction(test);
t3.applyTransaction(test);
t1.applyTransaction(test1);

如何将所有这些放在一个for循环中并且不像test1 = bankAccounts.get(1)那样手动访问每个列表中的项目

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

你可以循环你的Transaction ArrayList,然后访问每个ArrayList的元素,如下一个例子所示:

for(int i = 0; i < transactionList.size(); i++){
    transactionList.get(i).applyTransaction(bankAccounts.get(i));
}

希望它对你有用!有任何疑问让我知道。

答案 1 :(得分:1)

所以你的BankAccount构造函数中有一个代码(存储“chk001”,“sav001”等字段)。现在,您必须区分要应用交易的BankAccount

首先让我们遍历所有Transactions并获取每个Transaction的代码,这些代码是BankAccount的代码,需要应用并检索实际帐户,以便我们可以像Transaction那样应用它:

for(Transaction transaction : transactionList) 
{
    //get the type of account chk001, sav001, loc001 ..
    String accountType = transaction.getBankAccountType();
    BankAccount account = getTypeAccount(accountType)

    if(account != null)
    {
        transaction.applyTransaction(account);  
    } 

} 

前面的代码假设您在每个Transaction对象上都有一个getter来检索其代码。如果你没有它,你可以去Transaction课程并自己添加。

然后你可以在创建循环逻辑的同一个类中创建一个辅助方法,该循环逻辑检索与事务代码匹配的实际BankAccount,如下所示:

private BankAccount getTypeAccount(String accountType)
{
     for(BankAccount account : bankAccounts)
     {
           if(account.getCode().equals(accountType))
           {
                return account;
           }
     }
     return null;
}

最后,如第一个代码段所示,您通过以下方式应用发送正确BankAccount的交易:transaction.applyTransaction(account);

关于for循环的一些小教程,包括For-Each http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html