package demo06;

import javafx.beans.property.FloatProperty;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
* Iterator迭代器进行遍历取出集合中元素的方式
* java.util 接口 Iterator<E>
两个常用方法
* 方法摘要
boolean hasNext()
如果仍有元素可以迭代,则返回 true。
E next()
返回迭代的下一个元素。
Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口实现类对象,获取实现类的方式比较特殊
* Collection接口中有一个方法,叫iterator,这个方法返回的就是迭代器的实现类对象;
* Iterator<E> iterator()
返回在此 collection 的元素上进行迭代的迭代器。
*
*
*迭代器的使用步骤:
* 1使用集合中的方法iterator()获取跌倒去的实现类对象,使用Iterator接口接收(多态)
* 2使用Iterator接口中的方法hasNext()方法进行判断
*3使用Iterator接口中的next()取出下一个元素
*
* */
public class demo06{
public static void main(String[] args) {
//创建一个集合对象 使用多态
Collection<String>coll=new ArrayList<>();
System.out.println(coll);//打印了空 重写了toString方法

/*往集合中添加元素*/
coll.add("张三");
coll.add("张三");
coll.add("张三");
coll.add("张三");
coll.add("张三");

//// 1使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
//// 注意:Iterator<E>接口也是有泛型的,迭代器泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
// Iterator<String> it =coll.iterator();
//// boolean b=it.hasNext();
//// System.out.println(b);
//// //3使用Iterator接口中的next()取出下一个元素
//// String s=it.next();
//// System.out.println(s);
//
// /*发现使用迭代器取出集合中元素的代码是一个重复的过程,所以可以使用循环进行优化
// * 不知道集合有多少元素 使用while循环
// * */
// while (it.hasNext()){
// String t=it.next();
// System.out.println(t);
// }
//第二种方法
for (Iterator<String>it2=coll.iterator();it2.hasNext();){
String t=it2.next();
System.out.println(t);
}
}
}