比较两个数组列表

时间:2016-06-29 05:16:02

标签: java arrays

我有以下数组列表

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;
    }
}

但这需要很多时间。有人可以帮我优化吗?

1 个答案:

答案 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)所需的线性时间要好。