program:
public class SortedSet1 {
public static void main(String[] args) {
List ac= new ArrayList();
c.add(ac);
ac.add(0,"hai");
ac.add(1,"hw");
ac.add(2,"ai");
ac.add(3,"hi");
ac.add("hai");
Collections.sort(ac);
Iterator it=ac.iterator();
k=0;
while(it.hasNext()) {
System.out.println(""+ac.get(k));
k++;
}
}
}
输出:
人工智能
哈伊
你好
硬件
哈伊
它如何执行5次?
而来到 hai 时没有下一个元素出现,所以条件为假。但它是如何执行的。
上面的循环使用索引迭代列表。it.hasNext()
返回 true 直到it
到达列表末尾。既然你不打电话it.next()
在循环中推进迭代器,it.hasNext()
不断返回 true,并且循环继续进行。直到,也就是说,k
变为 5,此时IndexOutOfBoundsException
被抛出,退出循环。
使用迭代器的正确习惯用法是
while(it.hasNext()){
System.out.println(it.next());
}
或使用索引
for(int k=0; k<ac.size(); k++) {
System.out.println(ac.get(k));
}
然而,从 Java5 开始,首选方法是使用foreach循环 (and generics):
List<String> ac= new ArrayList<String>();
...
for(String elem : ac){
System.out.println(elem);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)