我有以下数组列表
List<Long> ids = new ArrayList<Long>();
List<Long> empIds = new ArrayList<Long>();
现在我需要比较这两个数组并检查empIds中是否存在任何值。如果是,我需要以布尔值true退出。我通过以下方式完成了这项工作。
for (Long id : ids) {
if (empIds.contains(id)) {
checker = true;
break;
}
}
但这需要很多时间。有人可以帮我优化吗?
答案 0 :(得分:4)
您可以将empIds
放入HashSet
以改善搜索时间:
Set<Long> empIdsSet = new HashSet<Long>(empIds);
for (Long id : ids) {
if (empIdsSet.contains(id)) {
checker = true;
break;
}
}
每次调用empIdsSet.contains(id)
都会花费预期的固定时间(O(1)
),这比每次调用empIds.contains(id)
所需的线性时间要好。