2015-12-15 95 views
0

我有一個Arraylist包含帳戶:如何搜索Queue中的ArrayList元素?

​​

其中一個Account具有以下屬性:

private int accountId; 
private String name; 
private String email; 
private double balance; 
private String date; 

和交易

static Queue<Transaction> transactions = new LinkedList<Transaction>(); 

其中Transaction有一個Queue以下屬性

private int transactionId; 
private String type; 
private double amount; 
private String dateTime; 

我想使用accountId搜索在我的交易「Queue」中使用指定的accountId進行的所有交易。

我該如何做到這一點?

+0

你有沒有實現一個類來表示'Account'和另一個'Transaction'? – jhamon

回答

0

給定一個Account類,如下所示:

package test; 

public class Account { 
    private static int currentAccountId = 0; 
    private int accountId; 

    public Account() { 
     this.accountId = ++currentAccountId; 
    } 

    @Override 
    public String toString() { 
     return String.valueOf(this.accountId); 
    } 
} 

你應該Account類型的字段添加到您的Transaction類:

package test; 

import java.util.Date; 

public class Transaction { 
    private static int currentTransactionId = 0; 
    private final int transactionId; 
    private final Account account; 
    private final String type; 
    private final double amount; 
    private final Date dateTime; 

    public Transaction(final Account account, final String type, final double amount) { 
     this.account = account; 
     this.type = type; 
     this.amount = amount; 
     this.dateTime = new Date(); 
     this.transactionId = ++currentTransactionId; 
    } 

    public int getTransactionId() { 
     return this.transactionId; 
    } 

    public Account getAccount() { 
     return this.account; 
    } 

    public String getType() { 
     return this.type; 
    } 

    public double getAmount() { 
     return this.amount; 
    } 

    public Date getDateTime() { 
     return this.dateTime; 
    } 

    @Override 
    public String toString() { 
     return "Transaction: " 
      + this.transactionId 
      + "/ Account:" 
      + this.account.toString() 
      + "/Type:" 
      + this.type 
      + "/Amount:" 
      + this.amount 
      + "/Date:" 
      + this.dateTime.toGMTString() 
      + System.lineSeparator(); 
    } 
} 

然後你可以爲AccountQueue參照搜索。例如與3個帳戶,5筆交易,如果搜索相關帳戶1交易:

package test; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.LinkedList; 
import java.util.List; 
import java.util.Queue; 

public class Runner { 

    public static void main(final String[] args) { 
     List<Account> accounts = new ArrayList<Account>(); 
     Account account1 = new Account(); 
     Account account2 = new Account(); 
     Account account3 = new Account(); 
     accounts.add(account1); 
     accounts.add(account2); 
     accounts.add(account3); 
     Queue<Transaction> transactions = new LinkedList<Transaction>(); 
     transactions.add(new Transaction(account1, "CREDIT", 10d)); 
     transactions.add(new Transaction(account1, "CREDIT", 20d)); 
     transactions.add(new Transaction(account2, "CREDIT", 5d)); 
     transactions.add(new Transaction(account3, "CREDIT", 8d)); 
     transactions.add(new Transaction(account1, "DEBIT", 3d)); 

     List<Transaction> account1Transactions = new ArrayList<Transaction>(); 
     for (Transaction transaction : transactions) { 
      if (transaction.getAccount().equals(account1)) { 
       account1Transactions.add(transaction); 
      } 
     } 
     System.out.println(Arrays.toString(account1Transactions.toArray())); 
    } 

} 

運行該程序將打印出下面的輸出:

[Transaction: 1/ Account:1/Type:CREDIT/Amount:10.0/Date:15 Dec 2015 15:56:54 GMT 
, Transaction: 2/ Account:1/Type:CREDIT/Amount:20.0/Date:15 Dec 2015 15:56:54 GMT 
, Transaction: 5/ Account:1/Type:DEBIT/Amount:3.0/Date:15 Dec 2015 15:56:54 GMT 
] 

它匹配到帳戶1相關3筆交易。

+0

非常感謝你! – choudhry

+0

如果我的回答對您有幫助,請將其上傳並標記爲「已接受」,謝謝。 – Kraal