1 package cn.learn.collection; 2 3 import java.util.Collection; 4 import java.util.HashSet; 5 import java.util.Iterator; 6 7 /* 8 java.util.Iterator 9 迭代器:主要用于遍历访问collection,遍历前都会先判断集合是否为空 10 11 Iterator的对象 也被称为迭代器 12 Iterator是一个接口,需要使用Iterator接口的实现类对象 13 获取方法比较特殊,Collection中有个iterator()方法,返回的是Iterator的实现类 14 15 先用hasNext()判断有无元素,返回一个Boolean,再用next(),取出元素 16 */ 17 public class IteratorApi { 18 public static void main(String[] args) { 19 Collection<String> hs= new HashSet<>(); 20 hs.add("ni"); 21 hs.add("nn"); 22 hs.add("n1"); 23 hs.add("n1"); 24 hs.add("n2"); 25 System.out.println(hs); //[nn,n1,n2,ni] 26 //接口指向实现类,多态,Iterator<E>的泛型是跟着集合走的 27 //iter指向的是集合的-1索引,为了hasNext(); 28 Iterator iter=hs.iterator(); 29 //迭代器遍历 30 while(iter.hasNext()){ 31 //iter.next()做了两件事,1:取出元素2:指针后移 32 System.out.println(iter.next()); 33 } 34 System.out.println(iter.hasNext());//false 35 36 37 /* 38 增强for循环,jdk1.5以后,专门用来遍历的,不可用来增删操作 39 格式: 40 for(数据类型 变量:集合或者数组名不能是迭代器名字){ 41 //操作代码 42 } 43 */ 44 //for循环的次数默认为数组或集合的size();内部原理和Iterator一样 45 for(String str: hs){ 46 // for (Iterator<String> iterator = hs.iterator(); iterator.hasNext(); ) 47 System.out.println(str); 48 } 49 50 } 51 }