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 }