【发布时间】:2016-04-15 08:10:48
【问题描述】:
假设我有一个 listA[String] 有 200 万条记录,另一个 listB 有 20000 条记录。
我想比较和检查listB 中有多少元素不包含在listA 中。
非常基本的方法是listA.contains(listB[i])。但是对于 2 万条记录,它将遍历 listA 2 万次,时间复杂度为 O(n*n)。
有没有更好的方法呢?
【问题讨论】:
-
拿 listB 并考虑如何使用不同的数据结构来表示它。可以使用 hashmap 或 hashset 吗?
-
@MichaelXu : 你能准确解释一下你想说什么吗?
-
@MichaelXu 但也许他没有可用的空间。另一种选择是按字母顺序对两个列表进行排序,然后遍历列表并进行比较。
-
如果他有空间,我希望 hashmap 是去这里的方式。很高兴在 SO 上与您互动。
-
可能是
BloomFilter
标签: java oop optimization arraylist