前几天有人问过我一个问题,就是两个嵌套for循环执行效率的问题,问有什么好的办法替换。当时我想了想,实在想不起来,哎,惭愧!!! 请教了答案,恍然大悟。

比如:两个list中分别装有相同的对象数据。 list1中有3万条对象数据。 list2中有2万条对象数据(但是对象中的某个属性变量为空)。两个list中的id或者其他变量都一模一样。请用最快的方式找出list2中变量为空的那个对象,并且去list1中找出id相同的对象。 或者可以理解成,从list2中找出变量为空的,去list1中找出对应的对象,然后把为空的列补上。总之就是这么一个意思,先 for 循环 list2,判断一下每个对象的那个属性变量是否为空,如果为空,再去for循环list1,找出id一样的对象,就算执行成功了。

那么请看下边的for循环嵌套的解决方式:

这样真的好吗? 如果有上万,甚至十几万的数据,那么这个执行效率问题,我就不多说了。 非常非常的慢。

下边来看使用map代替的执行方式,以及两种方式的效率对比:

输出结果:

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

使用map结构查询时间为:14(毫秒),一共查询出15000条数据

如果我们模拟10万条数据,然后其中五千条重复数据的情况下:效率更是天壤之别。

看输出结果:

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

使用map结构查询时间为:24(毫秒),一共查询出50000条数据

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

以上就是Java优化for循环嵌套的高效率方法的详细内容,更多关于Java 优化 for循环的资料请关注服务器之家其它相关文章!

原文链接:https://www.sunjs.com/article/detail/2932f6f6d7aa4da089dcf558f0629d97.html

java for循环写法优化,Java优化for循环嵌套的高效率方法相关推荐

  1. java for嵌套循环_Java优化for循环嵌套的高效率方法

    前几天有人问过我一个问题,就是两个嵌套for循环执行效率的问题,问有什么好的办法替换.当时我想了想,实在想不起来,哎,惭愧!!! 请教了答案,恍然大悟. 比如:两个list中分别装有相同的对象数据. ...

  2. java的for循环嵌套_优化Java的for循环嵌套的高效率方法

    两个list中分别装有相同的对象数据. list1中有3万条对象数据. list2中有2万条对象数据(但是对象中的某个属性变量为空).两个list中的id或者其他变量都一模一样.请用最快的方式找出li ...

  3. java双重for循环 效率_Java优化for循环嵌套的高效率方法

    前几天有人问过我一个问题,就是两个嵌套for循环执行效率的问题,问有什么好的办法替换.当时我想了想,实在想不起来,哎,惭愧!!! 请教了答案,恍然大悟. 比如:两个list中分别装有相同的对象数据. ...

  4. java strim性能_Java代码性能优化总结

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  5. 提升效率:优化Java代码的35个小技巧

    每天早晨,干货准时奉上! 本文作者:萌小Q 来源: www.cnblogs.com/Qian123/p/6046096.html 前言 代码优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方 ...

  6. asp java 变量_ASP_用stack变量优化Java代码,  java程序包含了大量的对象 - phpStudy...

    用stack变量优化Java代码 java程序包含了大量的对象,我们需要了解它们是从哪里被访问的,变量存储于何处对程序的性能有显著的影响--尤其是某些需要被频繁访问的变量. 我们写一个Java类,在其 ...

  7. java代码_阿里资深工程师教你如何优化 Java 代码!

    作者 | 王超责编 | 伍杏玲 明代王阳明先生在<传习录>谈为学之道时说: 私欲日生,如地上尘,一日不扫,便又有一层.着实用功,便见道无终穷,愈探愈深,必使精白无一毫不彻方可. 代码中的& ...

  8. 并发执行变成串行_大白话Java并发面试问题之Java 8如何优化CAS性能?

    专注于Java领域优质技术,欢迎关注 来自:石杉的架构笔记 一.前言 这篇文章给大家聊一下java并发包下的CAS相关的原子操作,以及Java 8如何改进和优化CAS操作的性能. 因为Atomic系列 ...

  9. kryo java_优化Java序列化– Java,XML,JSON,Kryo,POF

    kryo java 也许我很天真,但是我一直认为Java序列化肯定是将Java对象序列化为二进制形式的最快,最有效的方法. 毕竟Java是第7个主要发行版,所以这不是新技术,而且由于每个JDK似乎都比 ...

最新文章

  1. Javascript - 栈 和 单链表
  2. 解释大型网站js,css文件后面为什么有参数?
  3. android上传视频 断点续传,断点续传上传
  4. Spring Kafka生产者/消费者样本
  5. html5 video 直播流无声音,【报Bug】html5plus 使用 VideoPlayer 播放部分rtmp没有声音
  6. python查询mysql decimal报错_python读取MySQL数据表时,使用ast模块转换decimal格式数据的坑...
  7. AI版“大家来找茬”上线,究竟谁是真人,谁是GAN生成的假脸?
  8. XP搭建winwebmail具体步骤
  9. 《WinForm开发系列之控件篇》Item16 ErrorProvider
  10. axios封装全局loading
  11. html文件中flash视频格式(flv、swf)文件的嵌入方法
  12. oracle和mssql价格,Oracle与MSSql比对
  13. C/C++ - enum 与 int 相互转换
  14. 那些年,大厂在用的技术(前端)
  15. 协议和服务器有什么区别,服务期协议是什么,劳动合同与服务期协议有什么区别?...
  16. 原创 METTLER TOLEDO托利多Bplus 条码格式设置教程(scale manager)
  17. matcom v4.5 软件下载
  18. tabulate函数
  19. 轻量级Kubernetes之k3s:4:离线安装与部署
  20. Unity笔记---建立山峰和挖沟以及对其的锐化

热门文章

  1. 传奇私服制作小地图的知识详解
  2. 好用的JSON美化工具
  3. 直销企业海外市场应用系统的选型
  4. 第一篇博客------我也不知道为什么想写
  5. 容器镜像[容器培训专题]
  6. preparedStatement.setDate()
  7. Openstack Neutron 专题
  8. 《精英的人格魅力课》读书笔记(2):如何挣脱不适感
  9. 数据库开发题目-存储过程
  10. VC使用mingw32编译ffmpeg静态库所需文件(一),ffmpegshim.c