Effective Java第29条--将局部变量的作用域最小化

本文介绍了在Java中遍历集合的两种常见错误,并提供了更高效的改进方法。一是避免使用相同变量名造成迭代器覆盖,二是针对大型数组遍历推荐减少size()方法调用次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值