日期:2014-05-20  浏览次数:20726 次

关于java剔除手机黑名单的算法,有没有更好的?
现在有两个集合,一个是号码集合,另外一个是黑名单集合,现在需要把号码集合中的黑名单剔除,目前用到的方式就是双循环,但是号码集合和黑名单集合都可能有几十万的号码,双循环的话速度太慢了,各位高人有没有什么号的方式剔除黑名单?

集合A:号码集合
集合B:黑名单集合
需要得到的结果:剔除集合B出现在集合A中的号码

------解决方案--------------------
遍历B集合
然后判断B集合的元素是否出现在A集合中
若有则将其删除
可以用contains来判断 若存在则删除
------解决方案--------------------
2个集合排好序,重新储存号码集合,当某个号码和黑名单相同就跳过。时间复杂度应该就是O(2NLogN+N).
------解决方案--------------------
探讨
2个集合排好序,重新储存号码集合,当某个号码和黑名单相同就跳过。时间复杂度应该就是O(2NLogN+N).

------解决方案--------------------
探讨

引用:
2个集合排好序,重新储存号码集合,当某个号码和黑名单相同就跳过。时间复杂度应该就是O(2NLogN+N).


排序应该也需要时间吧。