您现在的位置是:蓝石榴 > 个人博客 > Java

个人博客

Java中for循环嵌套的替换优化

2019-09-04Java 4157
Java中两个嵌套for循环执行效率的问题有什么好的办法替换呢?有时候换一种思路会有意想不到的收获呢,一般我们用Map是一种高效率的方式。

比如:两个list中分别装有相同的对象数据,firstList中有6万条对象数据,secondList中有3万条对象数据(但是对象中的name属性变量为空)。两个list中的id或者其他变量都一模一样,从secondList中找出name变量为空的,去firstList中找出对应的对象,然后把name属性补上。先 for循环 secondList,判断一下每个对象的name属性变量是否为空,如果为空,再去for循环firstList,找出id一样的对象,就算执行成功了。下面来看看for循环嵌套执行方式、map代替的执行方式以及两种方式的效率对比:

Test类:

User类:

firstList中有6千条对象数据,secondList中有3千条对象数据时测试结果:

双for循环查询时间为:37(毫秒),一共查询出3000条数据

map方式查询时间为:2(毫秒),一共查询出3000条数据

firstList中有6万条对象数据,secondList中有3万条对象数据时测试结果:

双for循环查询时间为:3178(毫秒),一共查询出30000条数据

map方式查询时间为:13(毫秒),一共查询出30000条数据

firstList中有20万条对象数据,secondList中有10万条对象数据时测试结果:

双for循环查询时间为:82001(毫秒),一共查询出100000条数据

map方式查询时间为:24(毫秒),一共查询出100000条数据

总结:

循环数据越小,两者差别也就越小,但是数据量越大,差别也就越大。 20万条数据的差别竟然达到上千倍!

本文源码资源:

【源码下载】

很赞哦!(782)