Effective Java第29条--将局部变量的作用域最小化
2016-03-22 10:48
267 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">一,有两个迭代器的遍历:</span>
<span style="font-size:18px;">Iterate i = c1.iterator(); while(i1.hasNext()){</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>doSomething(i.next()); }</span>
<pre name="code" class="java"><span style="font-size:18px;">i = c2.iterator(); while(i.hasNext()){//由于复制粘贴导致忘记改变量名称</span>
<span style="font-size:18px;"><span> </span>doSomething(i.next()); }</span>
<span style="font-size: 24px;"><strong>在编译时不会报错,但是运行时,将会导致第二个迭代器不会遍历到。</strong></span>
<span style="font-size:24px;"><strong>优雅的修改如下:</strong></span>
<strong><span style="font-size:18px;"> </span></strong>
<span style="font-size:18px;">for(Iterator i = c.iterator();i.hasNext();){ doSomething(i.next()); }</span>
将i的作用域限制在for循环里面。
二,对于很大的数组的遍历,很多人喜欢直接使用游标遍历循环遍历,如下:
<span style="font-size:18px;">for(int i=0;i<list.size();i++){ doSomething(list.get(i)); }</span><span style="font-size:24px;"> </span>
这样做的话,当list很大的时候,每次迭代都要调用size方法,效率会降低。
建议:
<span style="font-size:18px;">for(int i=0,n=list.size();i<n;i++){ doSomething(list.get(i)); }</span>
一开始时就初始化n,可以在n很大的时候提高效率。
by:guin_guo
相关文章推荐
- js图表化工具
- jquery 中获取URL参数的方法
- JS判断数据类型
- Cross-Origin Resource Sharing协议介绍
- Bootstrap的iCheck插件checkbox和radio
- Html+css+javascript总结
- CSS颜色代码大全
- dhtmlxGrid实现setColumnHidden
- HTML 特殊符号编码对照表
- JavaScript-----获取本周第一天、最后一天的日期
- HTML5/JavaScript UI控件Wijmo Enterprise正式发布2016 v1|附下载
- Java 回顾笔记_StringBuffer
- 在js中获取父页面以及子页面对象的方法
- json对象转字符串与json字符串转对象
- jquery数字滚动
- js ie版本兼容问题
- Css3之基础-4 Css 框模型、内边距与外边距
- JS元素位置和位置坐标
- [转]ExtJS之遍历Store
- 浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号