我有两个数组列表;
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)
那样手动访问每个列表中的项目
感谢任何帮助。
答案 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