Iterator接口包含4个方法:
通过反复调用next方法就可以逐个访问集合中的每个元素。需要注意,如果到达了集合的末尾,再次调用next方法将会抛出一个NoSuchElementException,因此,通常遍历在调用next方法前先调用hasNext方法。
如果想要遍历集合中的所有元素,可以请求一个迭代器,并在hasNext方法返回true时反复地调用next方法,如:
1 public static void main(String[] args) { 2 List<String> nameList = new LinkedList<>(); 3 nameList.add("aaa"); 4 nameList.add("bbb"); 5 nameList.add("ccc"); 6 nameList.add("ddd"); 7 Iterator<String> nameIterator = nameList.iterator(); 8 while (nameIterator.hasNext()) { 9 System.out.println(nameIterator.next()); 10 //nameIterator.remove(); 11 } 12 }
也可以使用“for each”更加简练地实现同样地操作:
1 public static void main(String[] args) { 2 List<String> nameList = new LinkedList<>(); 3 nameList.add("aaa"); 4 nameList.add("bbb"); 5 nameList.add("ccc"); 6 nameList.add("ddd"); 7 for (String name : nameList) { 8 System.out.println(name); 9 } 10 }
事实上,“for each”会被编译器翻译为带有迭代器地循环。