集合比较算法(Java)
最近做了一个小测试,对两个集合的比较,目的是想删除出两个集合相同的数据。
分别用List、Map、和Set进行测试
利用List比较
10000用户的数据(6000相同的用户,4000不同的用户),完成比较的时间共耗时1531毫秒
100000用户的数据(60000相同的用户,40000不同的用户),完成比较的时间共耗时143735毫秒
利用Map比较
10000用户的数据(60000相同的用户,40000不同的用户),完成比较的时间共耗时172毫秒
100000用户的数据(60000相同的用户,40000不同的用户),完成比较的时间共耗时359毫秒
利用Set比较
10000用户的数据(60000相同的用户,40000不同的用户),完成比较的时间共耗时78毫秒
100000用户的数据(60000相同的用户,40000不同的用户),完成比较的时间共耗时156毫秒
1 楼 duooluu 2009-03-28 ArrayList内部是一个数组,删除后还要将后面的元素向前移动
HashSet内部也是一个HashMap,你后面两个测试相差一倍,TestMap应该还能优化 2 楼 mewleo 2009-03-28 避免比较对象,还是比数字好。
3 楼 Eastsun 2009-03-30 引用# public int hashCode(){
# int hash = 1;
# hash += this.id.hashCode();
# hash += this.name.hashCode();
# return hash;
# }
这个hashcode很强大~~ 4 楼 allenny 2009-03-31 我还以为是DNA的算法呢 5 楼 aninfeel 2009-04-01 无序或单向肯定比不上有序多向的,真要比的话应该把添加的时间也计算在内。 6 楼 wangichao 2009-07-07 不错学习了! 7 楼 myworkfirst 2009-07-07 是否真正都删除了相同的数据,有待怀疑。
认真检查下User类