迭代器Iterator

public class Demo1{
  public static void main(String[] args){
    Collection collection = new ArrayList<>();
    collection.add("java");
    collection.add("hello");
    
    testIterator(collection);
    
  }
  public static void testIterator(Collection collection){
  //Iterator<E> iterator() //获取集合中的对象
   /*
   * Iterator:叫迭代器
   * hasnext():判断当前位置是否有值,有返回true,没有false
   * next():取出当前位置的值,并将指针指向下一个位置
   */
  Iterator iterator  = collection.Iterator();
    while(iterator.hasNext()){
      String value = (String)iterator.next();
      System.out.println(value);
    }
  //注意点:
  //1.直接再次使用第一次的iterator进行遍历,遍历失败.因为当前指针已经指向了集合的最后.
  //再次使用hasnext会直接返回false.所以如果想再次遍历,要重新获取迭代器对象.
   while (iterator.hasNext()) {
   String value = (String) iterator.next();
   System.out.println("iterator1:"+value);
  }

  //2.注意:集合可以存储引用数据类型.可以存储不同的数据类型
  collection.add(2);
  //3.再次遍历--当集合中同时存在不同类型的数据时,需要进行容错处理和向下转型.
  Iterator iterator2 = collection.Iterator();
    while(iterator2.hasNext){
      Object obj = iterator.next();
      if(obj instanceOf String){
        System.out.println(obj);
      }
}
}
}