IDのリストがあります:List<Integer> updatedIds
。
私はマスターリストを持っています(たとえば、DBから取得)List<Records> masterList
:。
私は次のことをしたい:
- のIDごとに
updatedIds
、にあるかどうかを確認しmasterList
ます。そうでない場合は、レコードをに追加しmasterList
ます。 - のレコードごとに
masterList
、にあるかどうかを確認しupdatedIds
ます。そうでない場合、それは時代遅れなので、からそれを削除しますmasterList.
このための簡単なコードは次のとおりです。
for (Integer updId : updatedIds) {
boolean hasMapping = false;
for (Record rec : masterList) {
if (rec.getId() == updId) { hasMapping = true; break; }
}
if (!hasMapping) {
//TODO add updId to masterList
}
}
for (Record rec : masterList) {
boolean isObsolete = true;
for (Integer updId : updatedIds) {
if (rec.getId() == updId) { isObsolete = false; break; }
}
if (isObsolete) {
//TODO remove rec from masterList
}
}
最初のループは要件1を処理し、2番目のループは要件2を処理します。これは非常に非効率に見え、この種のタスクに間違ったデータ構造を使用している可能性があります。
上記のアルゴリズムを実装するより効率的な方法はありますか?