Java中for循环嵌套的替换优化
比如:两个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万条数据的差别竟然达到上千倍!
本文源码资源:- 上一篇
Java通过Jedis连接Redis的三种方式的操作工具类
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
- 下一篇
Tomcat 启动时 SecureRandom 非常慢解决办法
最近使用阿里云的 Ubuntu 16.04 ESC服务器运行 Tomcat时发现,Tomcat启动的特别慢,通过查看日志,发现时间主要花在实例化 SecureRandom对象上了。实例化该对象使用了253秒,导致整个应用启动了275秒之久。