如何遍历Collection中的元素?原理是什么?

参考答案

  1. for循环下标遍历,只适用于List集合,这种方法缺点是不够通用,对于无下标的集合如Set不适用:

    List<Integer> list = new ArrayList<>();
    for(int i = 0; i < list.size(); i++) {
     System.out.println(list.get(i));
    }
    
  2. 迭代器遍历,可以适用于任何Collection集合:

    Collection<Integer> list = new ArrayList<>();
    Iterator<Integer> iter = list.iterator();
    while(iter.hasNext()){
     System.out.println(iter.next());
    }
    
  3. foreach循环遍历,原理是在javac编译时会生成Iterator代码来完成实际遍历

    Collection<Integer> list = new ArrayList<>();
    for(Integer i: list){
     System.out.println(i);
    }
    

    编译成class后的伪代码如下:

    Collection<Integer> list = new ArrayList<>();
    Iterator<Integer> iter = list.iterator();
    while(iter.hasNext()){
    Integer i = iter.next();
    System.out.println(i);
    }
    

results matching ""

    No results matching ""