本文摘自php中文网,作者藏色散人,侵删。
下面由golang教程栏目给大家介绍用go语言实现查找两个数组的异同,希望对需要的朋友有所帮助!最近项目上碰到个小需求,输入是两个数组,一个旧数组一个新数组,要求获取新数组相对旧数组所有新增和删除的元素,例如:
1 2 3 4 5 6 |
|
go的标准库中没有类似的直接比较的方法,需要自己具体实现,最简单的方法当然是旧数组的每个元素去新数组,找不到的就是删除的,然后新数组的元素再挨个去旧数组找一遍,找不到就是新增的,但这个方法效率实在太低了。
这里我使用了一种基于集合运算的思想,即分别求两个数组的交集和并集,并集减去交集就是所有发生变化的元素(要么是新增的,要么是删除的),遍历这个集合中的元素去旧数组中查找,如果在旧数组中找到,那么就是删除掉的元素;反之,如果找不到,则一定能在新数组中找到(用不着真的再去遍历一次),那么就是新增的元素。
上代码,这里有个技巧,就是利用go中map键唯一性的特性,用数组的元素作为map的key,通过map来实现快速查找。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
运行结果:
1 2 |
|
欢迎大家交流效率更高的方法。
以上就是详解用go语言实现查找两个数组的异同的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
更多相关阅读请进入《Go语言》频道 >>

Go语言101
一个与时俱进的Go编程知识库。