我们在业务版本的开发过程中,经常遇到比较两个集合的是否相等的问题。我们会用那些方法来做集合的比较呢?
这两天在看吴军老师的《数学之美》,在里面看到一个非常简单的方法。先把比较两个集合是否相等的方法罗列如下:
1、遍历两个集合,分别比较,这是我们遇到集合比较,首先想到的方法,这个方法最直接也最笨。
2、将两个集合分别排序,然后顺序比较。这个方法稍微好些。
3、将第一个集合放到散列表中,然后把第二个集合中的元素一一取出和散列表中的元素对比,这个方法时间复杂度为O(N),但是额外的使用了O(N)的空间,代码复杂,不完美。
4、计算两个集合的指纹,然后直接比较两个集合的指纹。如果两个集合的元素是相同的,那么他们的指纹一定是相等。对于职位,我们可以理解为,用一组私钥对于集合进行加密就好了。
对于上面4中方法,前三种我们思考过后可能就会想到,但是对于最有效的方法是第四种。从书上看到这种方法,豁然开朗。希望对于我们后面对于集合的是否相等的比较方面提供思路。
这是我的微信公众号,欢迎关注我公号