jdk1.4及以前版本对collection接口下的对象完成一次迭代,代码编写比较繁琐,涉及到的方面比较多,比如要计算一个collection集合里所有整数之和,编写的方法如下:
public Integer sumCollection(Collection col)
{
Integer sum=0;
for(Iterator it=col.iterator();it.hasNext();)
{
Integer a=(Integer)it.next();
sum+=a;
}
return sum;
}
{
Integer sum=0;
for(Iterator it=col.iterator();it.hasNext();)
{
Integer a=(Integer)it.next();
sum+=a;
}
return sum;
}
上面的循环中涉及到了java.util.Iterator接口,以及需强制类型转换
运用java5的简化循环和“泛性”可以使代码简化,编写出来的程序浅显易懂,易于维护。
完成同样的功能代码如下:
public Integer sumCollection2(Collection<Integer> col)
{
Integer sum=0;
for(Integer a:col)
{
sum+=a;
}
return sum;
}
{
Integer sum=0;
for(Integer a:col)
{
sum+=a;
}
return sum;
}
其中Integer 代表集合里的类型,a代表每次循环中集合里的一个对象
此外简化循环还可以运用于数组
public Integer sumCollection3(Integer[] col)
{
Integer sum=0;
for(Integer a:col)
{
sum+=a;
}
return sum;
}
{
Integer sum=0;
for(Integer a:col)
{
sum+=a;
}
return sum;
}
简化循环用于循环嵌套,可以避免循环指针内循环和外循环颠倒。
比如:
for (Iterator i = suits.iterator(); i.hasNext(); )
for (Iterator j = ranks.iterator(); j.hasNext(); )
sortedDeck.add(new Card(i.next(), j.next()));
for (Iterator j = ranks.iterator(); j.hasNext(); )
sortedDeck.add(new Card(i.next(), j.next()));
由于i.next()在内循环每次都移向下一个,因此程序运行会抛出
NoSuchElementException!
正确的写法是
正确的写法是
for (Iterator i = suits.iterator(); i.hasNext(); ) {
Suit suit = (Suit) i.next();
for (Iterator j = ranks.iterator(); j.hasNext(); )
sortedDeck.add(new Card(suit, j.next()));
}
然而运用java5的简化for循环:
Suit suit = (Suit) i.next();
for (Iterator j = ranks.iterator(); j.hasNext(); )
sortedDeck.add(new Card(suit, j.next()));
}
然而运用java5的简化for循环:
for (Suit suit : suits)
for (Rank rank : ranks)
sortedDeck.add(new Card(suit, rank));
代码简洁又不容易出错
throws
想学习更多,建议去 [url]http://www.javabiz.cn[/url] 程式先锋网站去看看,那讲的挺不错的.
throws
想学习更多,建议去 [url]http://www.javabiz.cn[/url] 程式先锋网站去看看,那讲的挺不错的.
转载于:https://blog.51cto.com/ruyi2008/79869