あなたが十分なメモリを持っていると仮定すると、私はおそらくを使用しHashMap<AccountIdentifier, CustomerRecord>
ます。
CustomerRecord
探しているレコードを含むオブジェクトはどこにありますか。
次に、キークラスを作成します。
public class AccountIdentifier {
public String accountNumber;
public String customerName;
public AccountIdentifier(String accountNumber, String customerName) {
this.accountNumber = accountNumber;
this.customerName = customerName;
}
public int hashCode() {
return (accountNumber+"#"+customerName).hashCode();
}
public boolean equals(Object obj) {
if(!(obj instanceof AccountIdentifier)) return false;
else {
AccountIdentifier id = (AccountIdentifier)obj;
return accountNumber.equals(id.accountNumber) && customerName.equals(id.customerName);
}
}
}
CustomerRecord
したがって、各レコードを読み取り、そこに含まれるデータを使用してインスタンスを作成し、:を挿入して、2番目のファイルをメモリにプリロードする必要がありAccountIdentifier
ますMap
。
theMap.put(accountIdentifier, customerRecord);
検索するときが来て、最初のファイルからaccountNumberとcustomerNameを取得したら、次のようにします。
AccountIdentifier accountIdentifier = new AccountIdentifier(accountNumber, customerName);
CustomerRecord record = theMap.get(accountIdentifier);
最後のコメントですが、ファイルが大きすぎてメモリに収まらない場合は、ehcacheなどのキャッシュライブラリの使用を検討する必要があります。