我有一个 ID 列表:List<Integer> updatedIds
.
我有一个主列表(比如说,取自数据库)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。它看起来非常低效,我想我可能为这类任务使用了错误的数据结构。
有没有更有效的方法来实现上述算法?