开发中选择合适数据结构的重要性,set和list选择

1、今天在开发中遇上一个需求,要求通过IP获取有交集的用户。通过查询数据库,返回的数据量不大,几十万左右,因为要求获取全部数据,意味着要递归多次来获取用户数据。
最开始选择了用List类型,来排除已经被取出过的用户。结果花了10几分钟才获取到数据,递归了8次左右。这肯定不行的。
想改用直接查询库的方式来实现,但这也不好,表有两百多万的数据,递归深度太大的话,会把数据库拖垮。还是采用了原来的办法。
跟踪,调试,发现递归方法里面包含的需要遍历的list里面存在很多重复的记录,比如1这个数据,里面可能存在几十个,甚至成百上千。造成了不必要了遍历。于是改用set来存储,需要遍历的数据。2S出结果。十几分钟到2S,几百倍的速度递增。这个问题卡了两天,仅仅是因为数据结构选择错了,就导致了两天的时间浪费,做了无用功。记下来留作警示 ,也为道友提供一种思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值