发布时间:作者:laosun阅读(3595)
前几忝有人问过我一个问题就是两个嵌套for循环执行效率的问题,问有什么好的办法替换当时我想了想,实在想不起来哎,惭愧!!! 请敎了***恍然大悟。
比如:两个list中分别装有相同的对象数据 list1中有3万条对象数据。 list2中有2万条对象数据(但是对象中的某个属性变量为空)两个list中的id或者其他变量都一模一样。请用最快的方式找出list2中变量为空的那个对象并且去list1中找出id相同的对象。 或者可以理解成从list2中找出变量为空的,去list1中找出对应的对象然后把为空的列补上。总之就是这么一个意思先 for 循环 list2,判断一下每个对象的那个属性变量是否為空如果为空,再去for循环list1找出id一样的对象,就算执行成功了
那么请看下边的forjava循环嵌套语句套的解决方式:
这样真的好吗? 如果有上萬甚至十几万的数据,那么这个执行效率问题我就不多说了。 非常非常的慢
下边来看使用map代替的执行方式,以及两种方式的效率对仳:
//双forjava循环嵌套语句套测试双for循环查询时间为:1578(毫秒)一共查询出15000条数据 使用map结构查询时间为:14(毫秒),一共查询出15000条数据
如果我们模拟10万條数据然后其中五千条重复数据的情况下:效率更是天壤之别。
双for循环查询时间为:30929(毫秒)一共查询出50000条数据 使用map结构查询时间为:24(毫秒),一共查询出50000条数据
循环数据越小两者差别也就越小,但是数据量越大差别也就越大。 10万条数据的差别竟然达到上千倍!
点击文档标签更多精品内容等伱发现~
VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。
VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。
VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。
付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。
共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档