hasext() 在 Java 集合中如何工作

2024-02-05

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(使用前将#替换为@)

hasext() 在 Java 集合中如何工作 的相关文章

随机推荐