一个关于循环的效率问题

DreamOfbiz 2016-07-21 10:41:46
本人刚参加工作,然后写了下面的代码,然后经理看了说这样写是大忌而且超级影响效率,我想问问原理和具体情况还有以后该怎么注意,具体代码如下:

...全文
214 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsduren 2016-07-23
  • 打赏
  • 举报
回复
记住,尽量不要在循环里面进行IO操作(socket,文件等)数据库访问就是典型的IO操作,性能当然慢。 遇到这种需求,尽可能使用批处理。或者一个存储过程
DreamOfbiz 2016-07-21
  • 打赏
  • 举报
回复
引用 3 楼 ITjavaman 的回复:
[quote=引用 2 楼 qq_32900267 的回复:] 嗯, 定义放循环外我给忽略了 - - , 然后因为我需要取4个值,如果写一个sql把4个值全部查出来的话我又要用list来接收,然后再循环赋值,这样感觉也差不多吧。。
不一样的,如果简单处理,先全部查出来再赋值,首先减少的是你数据库的负担,查询一次跟查询4次,这样本来是4N,可以变成N次 另外可以从SQL语句方面入手,把所有你要的对象全部一次性查出来再遍历赋值,而不是每次只查一个对象,这样可以从N变成1[/quote] 学习了,谢谢指教!
ITjavaman 2016-07-21
  • 打赏
  • 举报
回复
引用 2 楼 qq_32900267 的回复:
嗯, 定义放循环外我给忽略了 - - , 然后因为我需要取4个值,如果写一个sql把4个值全部查出来的话我又要用list来接收,然后再循环赋值,这样感觉也差不多吧。。
不一样的,如果简单处理,先全部查出来再赋值,首先减少的是你数据库的负担,查询一次跟查询4次,这样本来是4N,可以变成N次 另外可以从SQL语句方面入手,把所有你要的对象全部一次性查出来再遍历赋值,而不是每次只查一个对象,这样可以从N变成1
DreamOfbiz 2016-07-21
  • 打赏
  • 举报
回复
嗯, 定义放循环外我给忽略了 - - , 然后因为我需要取4个值,如果写一个sql把4个值全部查出来的话我又要用list来接收,然后再循环赋值,这样感觉也差不多吧。。
ITjavaman 2016-07-21
  • 打赏
  • 举报
回复
- -,我不专业的说点看法 一、’类型的定义应该放在循环外面 二、你定义的四个String都是操作数据库赋值吧?你这样要操作多少次数据库,没次循环就要四次,如果是同表里面的数据,为何不统一查询出来先(这只是我的猜测)
小灰狼 2016-07-21
  • 打赏
  • 举报
回复
在 for 里先定义一个变量保存 chargeList.get(i) 得到的对象,然后再用这个对象作处理 这样写不但语句少,并且效率应该会快一点 如果 chargeList 是一个 LinkedList,这种效率差别会比较明显,因为LinkedList在内部是使用链表来实现的,而在链表里找指定下标的元素是从链表头向后找(或者从链表尾向前找),你每调用一次 get(i),链表会从头开始找一次 但如果是 ArrayList,差别不会太大,在ArrayList内部是使用数组实现存储的,取指定下标的元素是直接到数组中的元素下标 但不管怎么样,楼主的这种写法都不是好的编程习惯

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧